子集和问题:给定n个不同的正整数 已知其和大于c 问有多少个不同的其和等于c的子集? 下面给出的算
已帮助 人
子集和问题:给定n个不同的正整数,已知其和大于c,问有多少个不同的其和等于c的子集? 下面给出的算法,解空间树是子集树,且n个数已按从小到大有序存放于a数组中。 void backtrack(int i) { if(sum==c) count++; else if(i<=n) { if(sum+a[i]<=c) { sum+=a[i]; backtrack(i+1); 【 】 } } } 请将【 】 位置缺失的代码补齐,从下面选项中找到答案。
A.sum-=a[i];
B.sum-=a[i]; backtrack(i+1);
C.backtrack(i+1);
D.backtrack(i+1); sum-=a[i];

回答
共1条回复-
当解空间树是排列树时, 搜索时, 可以将从根结点到当前扩展结点的路径上的数看成是一个子集。;剪枝条件 : 当路径上的数之和 >c 时剪枝
