在n个数中求大于等于值a的m个数的组合,求最优解,要求算法的效率高。
答案:1 悬赏:50
解决时间 2021-10-19 18:45
- 提问者网友:萌卜娃娃
- 2021-10-18 22:18
在n个数中求大于等于值a的m个数的组合,求最优解(m个数的和大于a,且超过的值最小),要求算法的效率高。
最佳答案
- 二级知识专家网友:空山清雨
- 2021-03-12 14:47
不知道你是用什么语言写的算法
我给你描述一下,希望能帮上你
假如有这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个数
呵呵,参考一下吧
我给你描述一下,希望能帮上你
假如有这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个数
呵呵,参考一下吧
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯