不知道你是用什么语言写的算法
我给你描述一下,希望能帮上你
假如有这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个数
呵呵,参考一下吧