NYOJ 部分和问题
来源:互联网 发布:java实现web服务器 编辑:程序博客网 时间:2024/06/07 21:33
部分和问题
题目描述
给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。
输入
首先,n和k,n表示数的个数,k表示数的和。接着一行n个数。(1<=n<=20,保证不超int范围)
输出
如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”
样例输入
复制
4 131 2 4 7
样例输出
复制
YES2 4 7
提示
无
来源
nyoj
#include<stdio.h>#include<string.h>#include<stack>#include<algorithm>using namespace std;int a[105],n,k,i;stack<int>s; //用栈来存数,因为dfs中的数据是反着的,恩。。我也讲不清,自己理解一下吧bool dfs(int i,int sum){ if(i==n)return sum==k; //找到最后一个数字,判断 if(dfs(i+1,sum)) return 1; if(dfs(i+1,sum+a[i])) { s.push(a[i]); //把加上的数字存入栈中 return 1; } return 0;}int main(){ while(~scanf("%d%d",&n,&k)) { for(int i=0; i<n; i++) scanf("%d",&a[i]); if(dfs(0,0)) { printf("YES\n"); while(!s.empty()) { int x=s.top(); printf("%d ",x); s.pop(); } printf("\n"); } else printf("NO\n"); } return 0;}
代码2:
#include<stdio.h>#include<string.h>#include<stack>#include<algorithm>using namespace std;int a[105],n,k,i;stack<int>s; //用栈来存数,因为dfs中的数据是反着的,恩。。我也讲不清,自己理解一下吧bool dfs(int i,int sum){ if(sum>k) return 0; if(i==n)return sum==k; //找到最后一个数字,判断 if(dfs(i+1,sum)) return 1; if(dfs(i+1,sum+a[i])) { s.push(a[i]); //把加上的数字存入栈中 return 1; } return 0;}int main(){ while(~scanf("%d%d",&n,&k)) { for(int i=0; i<n; i++) scanf("%d",&a[i]); if(dfs(0,0)) { printf("YES\n"); while(!s.empty()) { int x=s.top(); printf("%d ",x); s.pop(); } printf("\n"); } else printf("NO\n"); } return 0;}
#include<stdio.h>#include<string.h>#include<stack>#include<algorithm>using namespace std;int a[105],n,k,i;stack<int>s; //用栈来存数,因为dfs中的数据是反着的,恩。。我也讲不清,自己理解一下吧bool dfs(int i,int sum){ if(sum>k) return 0; if(i==n)return sum==k; //找到最后一个数字,判断 if(dfs(i+1,sum)) return 1; if(dfs(i+1,sum+a[i])) { s.push(a[i]); //把加上的数字存入栈中 return 1; } return 0;}int main(){ while(~scanf("%d%d",&n,&k)) { for(int i=0; i<n; i++) scanf("%d",&a[i]); if(dfs(0,0)) { printf("YES\n"); while(!s.empty()) { int x=s.top(); printf("%d ",x); s.pop(); } printf("\n"); } else printf("NO\n"); } return 0;}
阅读全文
0 0
- nyoj 部分和问题
- nyoj-部分和问题
- nyoj 部分和问题
- nyoj-部分和问题
- nyoj-部分和问题
- NYOJ部分和问题
- NYOJ 部分和问题
- NYOJ-1058 部分和问题
- NYOJ 1058 部分和问题
- NYOJ 1056 部分和问题
- 深搜-nyoj-部分和问题
- nyoj 1058 部分和问题
- nyoj 1058 部分和问题
- NYOJ-1058 部分和问题
- nyoj 1058 部分和问题
- NYOJ-1058部分和问题
- NYOJ 1058 部分和问题
- NYOJ 1058 部分和问题
- navicat连接oracle数据库
- geowebcache发布arcgis切片
- adminLTE 教程 -6 多box
- 关于hashCode,你一定听说过会重复,那么你见过2个不同的字符串hashCode值却是相同的吗
- AlertDialogActivity弹框
- NYOJ 部分和问题
- JSTL中的Core标签库总结(一)
- Programming Amazon EC2.pdf 英文原版 免费下载
- adminLTE 教程 -7 进度条
- Linux(CentOs) 下安装Redis
- 带你逐步深入了解SSH框架——hibernate入门和基本操作
- 深入分析java web 的ClassLoader工作机制(一)
- 使用@Async实现异步调用
- CSV格式整理,去除与上一行数据重复的单元格