如int[] data={1,3,5,7,9,11,22,88,100,200,300,599}求和为55的所有可能的组合,要求运算速度快,穷举法的代码就不要贴了。

解决方案 »

  1.   

    代码就不贴了。思路很简单,就是递归,从列表中选择一个小于和的数字,然后在列表排除这个数字的剩下列表、在和减去所选数字的新的和的条件下,再次递归调用这个过程,直到找到一个数字等于新的和。
      

  2.   

    那就排列组合算法,求所有的组合数列,然后数列求和看是否为你所要的数值咯。
      

  3.   

    1楼、2楼,貌似还是穷举法呀,当数组的长度为30几个时,计算机的运算速度是不行的,我要求一个优化的算法。
      

  4.   

    递归的时候,稍加判断条件,应该速度就很快了,看下面有什么其他办法。