在n个数中求大于等于值a的m个数的组合,求最优解,要求算法的效率高。

2024-12-27 01:03:01
推荐回答(1个)
回答1:

不知道你是用什么语言写的算法

我给你描述一下,希望能帮上你
假如有这N个数是1,2,3,4,5,6,7,8,9,A=30

1.对这N个数从小到大进行排序(这个算法到处都有,不要说了吧)

2.在排好序的N个数中,从大的数到小的数依次相加,直到加到第X个数大于A,即
9+8+7+6+5>30,现在X=5,即加到第五个数大于A

3.把第X个数去掉,剩下 B=9+8+7+6 这个数是小于等于A的

4.再从排好序的N个数中,从小到大和B相加,如1+B 2+B、、Y+B、、并依次与A相比,若Y+B>A,则停止运算,在步骤2、4中所选择的数就是最优解。否则继续向下加,直到加到第N-X+1个数

呵呵,参考一下吧