只求一个组合可以采用背包问题的思路,求所有组合的话,背包问题可能就不太适用了。
这里面采用暴力搜索+剪枝,具体是先对给定的数组进行排序,在求解的深度优先搜索过程
中,如果出现中间的求和结果大于预先给定的数,那么就不用继续搜索了(因为后面的元素都大于
等于当前的元素,不用再往后搜索了)。
以前也写过类似的程序,但只是针对具体问题的,
这里修改了下,
给出一个比较通用的代码:
只求一个组合可以采用背包问题的思路,求所有组合的话,背包问题可能就不太适用了。
这里面采用暴力搜索+剪枝,具体是先对给定的数组进行排序,在求解的深度优先搜索过程
中,如果出现中间的求和结果大于预先给定的数,那么就不用继续搜索了(因为后面的元素都大于
等于当前的元素,不用再往后搜索了)。
以前也写过类似的程序,但只是针对具体问题的,
这里修改了下,
给出一个比较通用的代码: