NYOJ 1058 部分和问题
2014-07-17 21:33
288 查看
[b]部分和问题[/b]
时间限制:1000ms|内存限制:65535KB难度:2
[b]描述[/b]给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。
[b]输入[/b]首先,n和k,n表示数的个数,k表示数的和。
接着一行n个数。
(1<=n<=20,保证不超int范围)[b]输出[/b]如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”[b]样例输入[/b]
413 1247
[b]样例输出[/b]
YES 247
[b]来源[/b]
解题:一顿乱搜。。。。。。
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<vector> #include<climits> #include<algorithm> #include<cmath> #defineLLlonglong usingnamespacestd; intn,d[21],ans[21],m,res; booldfs(intcur,intadd,inttot){ if(cur>=n){ if(add==res){ m=tot; returntrue; } returnfalse; } if(dfs(cur+1,add,tot)){ returntrue; } if(dfs(cur+1,add+d[cur],tot+1)){ ans[tot]=d[cur]; returntrue; } returnfalse; } intmain(){ while(~scanf("%d%d",&n,&res)){ inti; for(inti=0;i<n;i++) scanf("%d",d+i); if(dfs(0,0,0)){ puts("YES"); for(i=0;i+1<m;i++) printf("%d",ans[i]); printf("%d\n",ans[i]); }elseputs("NO"); } return0; }
ViewCode
相关文章推荐
- nyoj 1058 部分和问题 【DFS】
- NYOJ 1058 部分和问题
- nyoj 1058 部分和问题
- NYOJ 1058--部分和问题【DFS】
- NYOJ 1058 部分和问题(经典题目dfs)
- NYOJ 1058 部分和问题 【DFS】
- NYOJ 1058部分和问题(dfs+回溯)
- nyoj1058部分和问题(简单基础易上手的dfs)
- NYOJ-1058 部分和问题
- 【经典DFS】NYOJ-1058-部分和问题
- NYOJ 1058 部分和问题(dfs)
- nyoj1058 部分和问题
- NYOJ 1058 部分和问题
- 搜索学习(3)--NYOJ1058--部分和问题
- nyoj 1058 部分和问题
- NYOJ-1058 部分和问题
- 部分和问题 NYOJ1058 简单深搜
- nyoj--1058 部分和问题(dfs)
- NYOJ-1058(搜索)-题目----------------------------- 部分和问题
- nyoj 1058 部分和问题 【简单DFS】