部分和问题升级版
来源:互联网 发布:常见的网络进攻形式 编辑:程序博客网 时间:2024/05/29 09:42
//当有多组数据满足的情况下就输出第一组///当出现负数的情况也应该要考虑///特殊情况当k=0也应当考虑清楚
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<cmath>using namespace std;int a[25];int flag[25];int n,k,sum;int ok,cc,pp;void dfs(int x){ pp++;//当k为0时保证循环不会直接退出 if(ok==1)//保证只输出一组解 return; if(sum>=k&&pp>1) { if(sum==k) { for(int i=0;i<=n;i++)//判断一下k为0的情况 { if(flag[i]==1) { cc=1; break; } } if(cc==1) { ok=1;//证明是有解的 cout<<"YES"<<endl; for(int i=0;i<n;i++) { if(flag[i]==1) { cout<<a[i]<<" "; } } cout<<endl; } return; } } for(int i=x;i<n;i++) { sum += a[i]; flag[i]=1; dfs(i+1); sum -= a[i]; flag[i]=0; }}int main(){ while(cin>>n>>k)//n表示数的个数,k表示数的和 { memset(flag,0,sizeof(flag)); ok=0; cc=0; pp=0; sum=0; for(int i=0;i<n;i++) cin>>a[i]; dfs(0); if(ok==0) { cout<<"NO"<<endl; } } return 0;}
4 131 2 4 7
YES2 4 7
1 0
- 部分和问题升级版
- 网站升级到IE10可能遇到的问题和部分解决方案
- centos 扩展yum源用于解决默认源部分软件没有和升级问题
- 优化Vista部分建议和升级注意事项
- DFS 部分和问题
- 部分和问题
- 多重部分和问题
- 部分和问题
- 部分和问题
- 部分和问题
- nyoj 部分和问题
- nyoj-部分和问题
- nyoj1058部分和问题
- 部分和问题
- nyoj 部分和问题
- 部分和问题
- 部分和问题
- 部分和问题
- CF 467A George and Accommodation
- SpringMVC 400 Bad Request 问题解决
- lunix常用命令和技巧(Red Hat Enterprise Linux Server release 6.2)
- React学习2
- LeetCode(56)-Add Binary
- 部分和问题升级版
- 一张图看懂收录与索引的区别
- typedef和#define的用法与区别
- 京东 上台阶
- W3C标准以及XHTML和HTML
- java多线程中的interrupt方法的使用
- 51nod 1085 背包问题<水过>
- [Spring]Method Injection
- Machine Learning第十周笔记:大规模机器学习