子集和数问题--问题
【题目描述】
已知n(0<n<=20)个不同正整数wi,0<=i<=n-1,的集合,求该集合的所有满足条件的子集,使得每个子集中的正整数之和等于另一个给定的正整数M。
【输入】
第一行输入n和M的值,第二行输入n个不同的正整数wi(i=0,…,n)。
【输出】
如果有答案,则输出所有满足条件的子集(用固定长度n-元组xi表示,xi=0或1,i=0,…,n)。如果没有答案,则输出“no solution!”。
【输入样例】
4 31
11 13 24 7
【输出样例】
1 1 0 1
0 0 1 1
#include <iostream>
using namespace std;
int count=0;
void Sort(int w[],int n){int i,j;for(i=0;i<n;i++){for(j=i;j<n-1;j++){if(w[j]>w[j+1]){int temp=w[j];w[j]=w[j+1];w[j+1]=temp;}}}
}
void SumofSub(int k,int s,int r,int w[],int x[],int M,int n,int y[]){int i,j,l;int *z=new int[n];for(i=1;i>=0;i--){x[k]=i;s+=x[k]*w[k];r-=w[k];if(s==M){count++;for(j=0;j<n;j++){for(l=0;l<n;l++){if(y[l]==w[j]){z[l]=x[j];break;}}}cout<<z[0];for(j=1;j<n;j++)cout<<" "<<z[j];cout<<endl;}else if((s+r>=M)&&(s+w[k+1]<=M)){SumofSub(k+1,s,r,w,x,M,n,y);}s-=x[k]*w[k];r+=w[k];}
}int main(){int n,M,i,s=0,r=0;cin>>n>>M;int *w=new int[n];int *x=new int[n];int *y=new int[n];for(i=0;i<n;i++){cin>>w[i];y[i]=w[i];x[i]=0;r+=w[i];}if(s+r>=M){Sort(w,n);SumofSub(0,s,r,w,x,M,n,y);}if(count==0)cout<<"no solution!"<<endl;return 0;
}
子集和数问题--问题相关推荐
- 子集和数问题——回溯法(C++)
问题描述 已知(w1, w2, -, wn)和M,均为正数.要求找出wi的和数等于M的所有子集. 例如:若n=4,(w1,w2,w3,w4)=(11,13,24,7),M=31,则满足要求的子集是(1 ...
- java子集和数问题回溯法算法_子集和数问题_回溯
有人说算法导论中没有回溯和分支定界这两种算法.我觉得这个算是导论中算法的应用吧,废话不多说,走起. 回溯算法之子集和数问题. 这个算法要解决的问题:假定有N个不同的正数(通常称为权),要求找出这些数中 ...
- 算法分析-子集和数,回溯法
#include <iostream> #include <algorithm>/*题目描述 子集和问题的一个实例为〈S,t〉.其中,S={ 1 x , 2 x ,-, n x ...
- 子集和数问题-----易懂
已知n(0<n<=20)个不同正整数wi,0<=i<=n-1,的集合,求该集合的所有满足条件的子集,使得每个子集中的正整数之和等于另一个给定的正整数M. [输入] 第一行输入n ...
- UVA dp题目汇总
UVa专题练习 A-4 10003 经典dp,可用四边形不等式优化 10029 基础dp,DAG最长路,需高效构图 10032 经典问题.子集和数问题.01背包问题 10036 能否在一个整数序列的每 ...
- 0x08算法设计与分析复习(二):算法设计策略-回溯法2
参考书籍:算法设计与分析--C++语言描述(第二版) 算法设计策略-回溯法 子集和数 问题描述 已知n个不同的正数wi(0≤i≤n−1)的集合,求该集合的所有满足条件的子集,使得每个子集中的正数之和等 ...
- DP项目计算机科学,动态规划DynamicProgrammingDP-天津大学计算机科学与技术学院.PPT...
动态规划DynamicProgrammingDP-天津大学计算机科学与技术学院 * * * * * * * * * * * * * * * * * * * * * yMax=min(w[n]-1,c) ...
- 算法设计与分析复习--回溯法
算法设计与分析期末复习 主要参考: 算法设计与分析(北京航空航天大学MOOC) 算法设计与分析(北京大学MOOC) 华中科技大学 计算机科学与技术学院 算法设计与分析 课堂教学PPT 五. ...
- 初学者acm的练习题指南
上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1. <!--[endif]-->Programming Bas ...
最新文章
- oc 默认属性关键词
- Metasploit中aggregator插件无法使用
- 一文带你弄懂普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法
- RPM 软件包名中的 el5、el6、el7 是什么?
- c++ 智能指针用法详解
- 网络知识普及:双网卡下知识知多少,路由表及网关那点事
- 会声会影保存的文件在哪里
- 计算机算法和算法复杂度
- Springboot 拦截器配置(登录拦截)
- ibatis java 项目_iBatis搭建JAVA项目
- 酒店消防安全知识培训PPT模板
- 医学统计学计算机操作教程第3版附录答案,医学统计学课后习题集答案解析.doc...
- Bootstrap系列之排版
- 大学计算机应用基础第二版习题答案,《大学计算机应用基础》各章习题参考答案...
- 图片转为PDF怎么弄
- Python学习week5
- 使用python完成知乎模拟登陆
- NMN是什么概念,nmn是真的还是假的,你一定要知道
- 手机发出的邮件可以撤回吗?已发出的邮件撤回后对方能看到吗?
- 修复共享服务器,集群服务器共享磁盘柜的修复案例
热门文章
- 全新C4D必备插件合集他来啦傻瓜式一键安装
- 自己写的免费的pdf拆分工具
- 用设计模式降低循环复杂性
- 智能手表好处有多少?荣耀产品开箱“惊人”
- 【自动控制原理】以弹簧振动系统(典型二阶系统)为例理解系统微分方程与传递函数、控制框图的关系,闭环极点与稳定性的关系
- 【医学影像】超声(UltraSound)影像的增强与目标检测
- 【人在江湖飘,哪有不带刀】神器Jumony
- xmlagg函数的使用--课表视图
- 使用brew安装hexo报错--- Cowardly refusing to `sudo brew install`
- API提取模式HTTP代理IP使用