问题描述:
对于给定的正整数集合S={x1,x2,…,xn}和正整数c,编程计算S的一个子集S1,使得
也就是说,从一组数中求和为某个定值的元素的组合方式。
同样是一个组合问题。
使用回溯法解决该问题:
逐步搜索,针对解空间的每一个解,检测其是否为目标,如果是,则标记该解;如果不是,则继续搜索。
回溯法的详细描述见上一篇博客:回溯法解决0-1背包问题
该问题的所有解为:
问题的时间复杂度:
每一个元素都有左右两条分支(0/1),完全二叉树,搜索时间复杂度为O(2^n