求助:有一组数字,求任意几个数相加,使的其和等于或接近给定值.请问这个程序如何实现?谢谢!
有一组数字,数字数量不定,求其中任意几个数相加,使的其和等于或接近给定值.请问这个程序如何实现?
这个程序算法复杂,效率恐怕不高,特别是数据量大的时候。曾经做了一个这样的算法,意思是可以把准备参与计算的数据前面系数设定为1,不参与计算的数据系数为0,每次计算就是这些由0和1组成的系数的排列了。假如有N个数据,则这样的排列就是2^N-1个。得出的算法是:
(1)I从1到2^N循环
(2)将I转换为N位二进制M
(3)析出M中1所在位置,并将对应的数据累加,得到X
(4)X与给定的数据Y比较,Z=ABS(X-Y),若Z=0则程序结束,输出结果;若Z#0则保留这个值并与前面得到的Z比较是否最小,...
(5)转(1)