博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
子集和问题
阅读量:3963 次
发布时间:2019-05-24

本文共 686 字,大约阅读时间需要 2 分钟。

问题描述:给定集合S,S中有n个正整数,M是一个正整数。子集和问题判定是否存在S的一个子集S1,使得S1中各元素之和等于M。请设计回溯法求解子集和问题,如果问题无解,输出“No Solution”,问题有解,则输出满足子集S1中各元素的值

输入
6 12
3 4 5 7 10 1
输出
3 4 5

#include 
using namespace std;const int N = 10005;int a[N], n, m, rec[N]; bool nu;void dfs(int start, int sum, int cnt) {
if (sum > m) return ;//剪枝 if (sum ==m) {
for (int i = 0; i < cnt; i++) cout<
<<" "; nu= true;//记录是否找到一组解 return ; } for (int i = start; i <= n; i++) {
//重复性剪枝 rec[cnt] = a[i]; //记录当前选的值 dfs(i + 1, sum + a[i], cnt + 1); //对下一个进行搜索 if (nu) return; }}int main() {
cin>>n>>m; for (int i = 1; i <= n; i++) {
cin>>a[i]; } dfs(1, 0, 0); if (!nu) cout<<"Solution"<

转载地址:http://tyezi.baihongyu.com/

你可能感兴趣的文章
面向过程的分析方法
查看>>
软件设计基础
查看>>
UML的基本结构
查看>>
UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
查看>>
用例图(UseCase Diagram)—UML图(一)
查看>>
类图(Class diagram)—UML图(二)
查看>>
活动图(Activity Diagram)—UML图(四)
查看>>
C#方法重载(overload)方法重写(override)隐藏(new)
查看>>
CSS+DIV练手-公司
查看>>
CSS+DIV练手—鲜花展
查看>>
深入浅出JavaScript(1)—ECMAScript
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
Asp.Net+Jquery.Ajax详解1-开篇
查看>>
我的软件工程之路(四)—半年总结
查看>>
Asp.Net+Jquery.Ajax详解5-$.getScript
查看>>
Asp.Net+Jquery.Ajax详解6-$.ajaxSetup
查看>>
什么是Dojo?与Jquery宏观对比,结果如何?
查看>>
Asp.Net+Jquery.Ajax详解8-核心$.ajax
查看>>
项目中一个用于导出word的方法
查看>>
测试Jsp 静态包含和动态包含
查看>>