题:# 05-ZZ06-04-积分兑换(2)
某学员积累了m积分,他想兑换玩具。兑换每个玩具需要一定的积分。现在已知有n个玩具,以及兑换每个玩具需要的积分。现在该学员准备去兑换玩具,他希望兑换掉的积分越多越好、兑换后剩余的积分越少越好,因为这些积分有期限,再不兑换就要清零了。问该学员最多可以花掉多少积分。
输入数据第一行为两个正整数m和n,用空格隔开,m≤20000,n≤20,分别表示该学员的积分、玩具的数量。第二行为n个正整数,用空格隔开,范围为[1, 1000],表示兑换每个玩具需要的积分。
输出数据占一行,为求得的答案。
300 10
82 96 87 96 67 80 69 67 88 81
299
820 10
82 96 87 96 67 80 69 67 88 81
813
兑换第1、5、7、10共4个玩具,或第1、7、8、10共4个玩具,或第2、5、7、8共4个玩具,或第4、5、7、8共4个玩具,总共花费299积分,剩余1积分。
兑换10个玩具总共需要813积分,因此全部兑换,花掉813积分,还剩7积分。
本题源自以下教材的测试题:王桂平, 林晓淅, 明正华, 等编著. C++趣味编程及算法进阶. 北京大学出版社, 2025年将出版.
本以为是sort,结果老师说是01背包,但蒟蒻算法才学到递归递推,求大佬帮助