从M个数中取出任意N个数,N<=M 使其和为一定值S,列出所有满足条件的组合,求C#代码
如int[] data={1,3,5,7,9,11,22,88,100,200,300,599}求和为55的所有可能的组合,要求运算速度快,穷举法的代码就不要贴了。 --------------------编程问答-------------------- 代码就不贴了。思路很简单,就是递归,从列表中选择一个小于和的数字,然后在列表排除这个数字的剩下列表、在和减去所选数字的新的和的条件下,再次递归调用这个过程,直到找到一个数字等于新的和。 --------------------编程问答-------------------- 那就排列组合算法,求所有的组合数列,然后数列求和看是否为你所要的数值咯。 --------------------编程问答-------------------- 1楼、2楼,貌似还是穷举法呀,当数组的长度为30几个时,计算机的运算速度是不行的,我要求一个优化的算法。 --------------------编程问答-------------------- 递归的时候,稍加判断条件,应该速度就很快了,看下面有什么其他办法。
补充:.NET技术 , C#