nyist oj 1058 部分和问题 (DFS搜索)
部分和问题
时间限制:1000 ms | 内存限制:65535 KB
难度:2
-
描写叙述
- 给定整数a1、a2、.......an。推断能否够从中选出若干数,使它们的和恰好为K。
-
输入
- 首先,n和k,n表示数的个数。k表示数的和。
接着一行n个数。
(1<=n<=20,保证不超int范围)
-
输出
- 假设和恰好能够为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成。否则“NO”
-
例子输入
-
4 13
1 2 4 7
-
例子输出
-
YES
2 4 7
-
来源
source=%E7%BB%8F%E5%85%B8%E9%A2%98%E7%9B%AE" style="text-decoration:none; color:rgb(55,119,188)">经典题目
-
上传者
userid=TC_%E6%9D%A8%E9%97%AF%E4%BA%AE" style="text-decoration:none; color:rgb(55,119,188)">TC_杨闯亮
部分和问题
- 输入
- 首先,n和k,n表示数的个数。k表示数的和。
接着一行n个数。
(1<=n<=20,保证不超int范围) - 输出
- 假设和恰好能够为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成。否则“NO”
- 例子输入
-
4 13
1 2 4 7 - 例子输出
-
YES
2 4 7 - 来源
source=%E7%BB%8F%E5%85%B8%E9%A2%98%E7%9B%AE" style="text-decoration:none; color:rgb(55,119,188)">经典题目
- 上传者
userid=TC_%E6%9D%A8%E9%97%AF%E4%BA%AE" style="text-decoration:none; color:rgb(55,119,188)">TC_杨闯亮
搜索简单题。递归的时候一定要注意结束的条件,就是临界条件,降低递归的开销;
#include <cstdio>
#include <cstring>
using namespace std;
int a[30],n,k,sum;
bool visit[30],flag;
void dfs(int pos)
{
if(flag==true)
return ;
if(sum>=k)
{
if(sum==k)
{
flag=true;
printf("YES\n");
for(int i=0;i<n;i++)
if(visit[i])//标记
printf("%d ",a[i]);
}
return;//这里就是递归结束的条件。在这里加一个结束条件,时间花销就降低了不少
}
for(int i=pos;i<n;i++)//搜索的过程
{
sum+=a[i];
visit[i]=1;
dfs(i+1);
sum-=a[i];
visit[i]=0;
}
}
int main()
{
int i;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
memset(visit,0,sizeof(visit));
flag=false;
dfs(0);
if(!flag)
printf("NO\n");
}
return 0;
}
nyist oj 1058 部分和问题 (DFS搜索)的更多相关文章
- nyist oj 19 擅长排列的小明(dfs搜索+STL)
擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 小明十分聪明.并且十分擅长排列计算.比方给小明一个数字5,他能立马给出1-5按字典序的全排列,假设你想 ...
- 『ACM C++』HDU杭电OJ | 1416 - Gizilch (DFS - 深度优先搜索入门)
从周三课开始总算轻松了点,下午能在宿舍研究点题目啥的打一打,还好,刚开学的课程还算跟得上,刚开学的这些课程也是复习以前学过的知识,下半学期也不敢太划水了,被各种人寄予厚望之后瑟瑟发抖,只能努力前行了~ ...
- hdu 1312:Red and Black(DFS搜索,入门题)
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- [ZOJ 1011] NTA (dfs搜索)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1011 题目大意:在一棵树上,给你起始状态,问你能否到达终止状态. ...
- HDU 1312:Red and Black(DFS搜索)
HDU 1312:Red and Black Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & ...
- [Swust OJ 799]--Superprime Rib(DFS)
题目链接:http://acm.swust.edu.cn/problem/799/ Time limit(ms): 1000 Memory limit(kb): 10000 Description ...
- hihocoder 1050 树中的最长路(动态规划,dfs搜索)
hihocoder 1050 树中的最长路(动态规划,dfs搜索) Description 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅 ...
- sdut 2152:Balloons(第一届山东省省赛原题,DFS搜索)
Balloons Time Limit: 1000MS Memory limit: 65536K 题目描述 Both Saya and Kudo like balloons. One day, the ...
- 蓝桥杯 历届试题 剪格子(dfs搜索)
历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |* || +--****--+ ||* | ** ...
随机推荐
- iOS日期转换之UTC/GMT时间格式
GMT只需要将代码中的UTC替换为GMT即可 //将本地日期字符串转为UTC日期字符串 //本地日期格式:2013-08-03 12:53:51 //可自行指定输入输出格式 -(NSString *) ...
- CMSIS-RTOS 信号量
信号量Semaphores 和信号类似,信号量也是一种同步多个线程的方式,简单来讲,信号量就是装有一些令牌的容器.当一个线程在执行过程中,就可能遇到一个系统调用来获取信号量令牌,如果这个信号量包含多个 ...
- CodeForces 337A Puzzles
Puzzles Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Origina ...
- hdu 4707 Pet【BFS求树的深度】
Pet Time Limit: 4000/2000 MS (Java/Others) ...
- redis之字符串命令源代码解析(二)
形象化设计模式实战 HELLO!架构 redis命令源代码解析 在redis之字符串命令源代码解析(一)中讲了get的简单实现,并没有对 ...
- 学习 shell —— 创建序列数组
list/array 1. seq 方法创建 基本用法: $ a_num_seq = ($seq 5) $ echo $a_num_seq 1 2 3 4 5 a_num_seq 得到是字符串,不同之 ...
- jasperreport 追加新报表(2)
用ireport做好模版后,如果要新加一个打印页,如果是新手,直接修改模版应该是理想情况, 可是什么数据源 feild,parameter,var,subreport ,还有路径, 真的可以让一个人疯 ...
- 不允许 ASSIGNMENT 语句中包含 FOR XML 子句。
DECLARE @guidList NVARCHAR(max) SELECT @guidList=( CAST(OrderGUID AS nvarchar(max)) +',') FROM Order ...
- 玲珑学院 1010 - Alarm
1010 - Alarm Time Limit:1s Memory Limit:128MByte DESCRIPTION Given a number sequence [3,7,22,45,116, ...
- Linux 如何重新划分Swap交换分区
SWAP分区是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得数据存起来,在需要的时候再调进内存内,且作为SWAP使用的分区不用指定“MoutPoint”(载入点)它至少要等于系统上实际 ...