C. 部分和问题
来源:互联网 发布:赛诺市场数据 9月 编辑:程序博客网 时间:2024/05/11 12:34
给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。
ps:建议用code blocks 的watchs认真看看
Input
首先,n和k,n表示数的个数,k表示数的和。
接着一行n个数。
(1<=n<=20,保证不超int范围)
接着一行n个数。
(1<=n<=20,保证不超int范围)
Output
如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”
Sample Input
4 131 2 4 7
Sample Output
YES
2 4 7
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int a[22],b[22],n,k;bool dfs(int x,int sum)//x代表步数{ if(sum>k) return false; if(x==n) return sum==k; if(dfs(x+1,sum))//不能加上a[x]; { b[x]=0; return true; } if(dfs(x+1,sum+a[x]))//能加上a[x]; { b[x]=1; return true; }}int main(){ while(~scanf("%d%d",&n,&k)) { memset(b,0,sizeof(b)); for(int i=0; i<n; i++) { scanf("%d",&a[i]); } if(dfs(0,0))//搜索开始 { printf("YES\n"); for(int i=0; i<n; i++) { if(b[i]) printf("%d ",a[i]); } printf("\n"); } else printf("NO\n"); } return 0;}
ps:建议用code blocks 的watchs认真看看
0 0
- C. 部分和问题
- 编程算法 - 部分和问题 代码(C)
- 编程算法 - 多重部分和问题 代码(C)
- DFS 部分和问题
- 部分和问题
- 多重部分和问题
- 部分和问题
- 部分和问题
- 部分和问题
- nyoj 部分和问题
- nyoj-部分和问题
- nyoj1058部分和问题
- 部分和问题
- nyoj 部分和问题
- 部分和问题
- 部分和问题
- 部分和问题
- 多重部分和问题
- css 强制换行和不换行
- 数据结构实验之排序七:选课名单
- (五)控制语句
- 在Eclipse中部署Maven多模块项目
- 用JS和正则表达式替换字符串中的换行符
- C. 部分和问题
- 欢迎使用CSDN-markdown编辑器
- Spring分布式事务实现
- js脚本按比例缩放图片
- JavaScript中的纯函数
- springboot Caused by: java.lang.IllegalArgumentException: Property 'sessionFactory' is required
- 滚动条
- 短信验证码
- 设计模式之单例模式