【题目描述】
已知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;
}

子集和数问题--问题相关推荐

  1. 子集和数问题——回溯法(C++)

    问题描述 已知(w1, w2, -, wn)和M,均为正数.要求找出wi的和数等于M的所有子集. 例如:若n=4,(w1,w2,w3,w4)=(11,13,24,7),M=31,则满足要求的子集是(1 ...

  2. java子集和数问题回溯法算法_子集和数问题_回溯

    有人说算法导论中没有回溯和分支定界这两种算法.我觉得这个算是导论中算法的应用吧,废话不多说,走起. 回溯算法之子集和数问题. 这个算法要解决的问题:假定有N个不同的正数(通常称为权),要求找出这些数中 ...

  3. 算法分析-子集和数,回溯法

    #include <iostream> #include <algorithm>/*题目描述 子集和问题的一个实例为〈S,t〉.其中,S={ 1 x , 2 x ,-, n x ...

  4. 子集和数问题-----易懂

    已知n(0<n<=20)个不同正整数wi,0<=i<=n-1,的集合,求该集合的所有满足条件的子集,使得每个子集中的正整数之和等于另一个给定的正整数M. [输入] 第一行输入n ...

  5. UVA dp题目汇总

    UVa专题练习 A-4 10003 经典dp,可用四边形不等式优化 10029 基础dp,DAG最长路,需高效构图 10032 经典问题.子集和数问题.01背包问题 10036 能否在一个整数序列的每 ...

  6. 0x08算法设计与分析复习(二):算法设计策略-回溯法2

    参考书籍:算法设计与分析--C++语言描述(第二版) 算法设计策略-回溯法 子集和数 问题描述 已知n个不同的正数wi(0≤i≤n−1)的集合,求该集合的所有满足条件的子集,使得每个子集中的正数之和等 ...

  7. DP项目计算机科学,动态规划DynamicProgrammingDP-天津大学计算机科学与技术学院.PPT...

    动态规划DynamicProgrammingDP-天津大学计算机科学与技术学院 * * * * * * * * * * * * * * * * * * * * * yMax=min(w[n]-1,c) ...

  8. 算法设计与分析复习--回溯法

    算法设计与分析期末复习 主要参考: ​ 算法设计与分析(北京航空航天大学MOOC) ​ 算法设计与分析(北京大学MOOC) ​ 华中科技大学 计算机科学与技术学院 算法设计与分析 课堂教学PPT 五. ...

  9. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

最新文章

  1. oc 默认属性关键词
  2. Metasploit中aggregator插件无法使用
  3. 一文带你弄懂普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法
  4. RPM 软件包名中的 el5、el6、el7 是什么?
  5. c++ 智能指针用法详解
  6. 网络知识普及:双网卡下知识知多少,路由表及网关那点事
  7. 会声会影保存的文件在哪里
  8. 计算机算法和算法复杂度
  9. Springboot 拦截器配置(登录拦截)
  10. ibatis java 项目_iBatis搭建JAVA项目
  11. 酒店消防安全知识培训PPT模板
  12. 医学统计学计算机操作教程第3版附录答案,医学统计学课后习题集答案解析.doc...
  13. Bootstrap系列之排版
  14. 大学计算机应用基础第二版习题答案,《大学计算机应用基础》各章习题参考答案...
  15. 图片转为PDF怎么弄
  16. Python学习week5
  17. 使用python完成知乎模拟登陆
  18. NMN是什么概念,nmn是真的还是假的,你一定要知道
  19. 手机发出的邮件可以撤回吗?已发出的邮件撤回后对方能看到吗?
  20. 修复共享服务器,集群服务器共享磁盘柜的修复案例

热门文章

  1. 全新C4D必备插件合集他来啦傻瓜式一键安装
  2. 自己写的免费的pdf拆分工具
  3. 用设计模式降低循环复杂性
  4. 智能手表好处有多少?荣耀产品开箱“惊人”
  5. 【自动控制原理】以弹簧振动系统(典型二阶系统)为例理解系统微分方程与传递函数、控制框图的关系,闭环极点与稳定性的关系
  6. 【医学影像】超声(UltraSound)影像的增强与目标检测
  7. 【人在江湖飘,哪有不带刀】神器Jumony
  8. xmlagg函数的使用--课表视图
  9. 使用brew安装hexo报错--- Cowardly refusing to `sudo brew install`
  10. API提取模式HTTP代理IP使用