NYOJ1058 部分和问题
来源:互联网 发布:网络黄金egd还有希望吗 编辑:程序博客网 时间:2024/06/14 07:34
部分和问题
- 描述
- 给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。
- 输入
- 首先,n和k,n表示数的个数,k表示数的和。
接着一行n个数。
(1<=n<=20,保证不超int范围) - 输出
- 如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”
- 样例输入
4 131 2 4 7
- 样例输出
YES2 4 7
#include <iostream>
#include<cstring>
using namespace std;
int a[25];
int visit[25];
int n,k;
int sum;
bool dfs(int p){
if(sum==k){
return true;
}
for(int i=p;i<n;i++){
if((sum+a[i])<=k){
visit[i]=1;
sum += a[i];
if(dfs(i+1)){
return true;
}
sum -= a[i];
visit[i]=0;
}
}
return false;
}
int main(int argc, const char * argv[]) {
while(cin>>n>>k){
sum=0;
memset(visit, 0, sizeof(visit));
for(int i=0;i<n;i++){
cin>>a[i];
}
if(dfs(0)){
cout<<"YES"<<endl;
for(int i=0;i<n;i++){
if(visit[i]==1){
cout<<a[i]<<" ";
}
}
cout<<endl;
}
else cout<<"NO"<<endl;
}
return 0;
}
这是一道简单的dfs问题,较为简单,在这里不做过多解释
时间8 内存240
- nyoj1058部分和问题
- nyoj1058 部分和问题
- nyoj1058 部分和问题
- nyoj1058 部分和问题
- NYOJ1058部分和问题
- NYOJ1058 部分和问题
- NYOJ1058 部分和问题
- nyoj1058 部分和问题
- [NYOJ1058]部分和问题
- nyoj1058 部分和问题 dfs
- 部分和问题 NYOJ1058 简单深搜
- nyoj1058部分和问题(DFS)
- NYOJ1058部分和问题(dfs)
- NYOJ1282 NYOJ1058 部分和问题(DFS)
- nyoj1058部分和问题(基于01背包的思想)
- 搜索学习(3)--NYOJ1058--部分和问题
- nyoj1058部分和问题(简单基础易上手的dfs)
- NYOJ1058+NYOJ1282 部分和问题(深度优先搜索DFS入门题)
- Qt笔记-TabWidget
- 关于file文件,通过file文件对图片进行操作
- 神奇的操作 [vector、二分]
- 排序算法小结(python 实现)
- zoj1655(最短路)
- NYOJ1058 部分和问题
- spring常用注解(未完待续)
- 仿IOS样式对话框
- 关于雅克比矩阵与黑塞矩阵
- Interger
- 谷歌研究发现优秀的团队必须具备这五个关键特质
- CSS学习笔记
- hive基础(二)--HQL语句
- WatchOS系统开发大全(4)-WatchApp生命周期