部分和问题

描述:

给定整数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

解题思路:

先从第一个数开始搜,并把sum初始化为0,然后分两种情况一种是把下一个数加上并标记,另一种是不把下一个数加上并标记

程序代码:

#include<stdio.h>
#include<string.h>
int dfs(int i,int sum);
int n,k,a[25],book[25];
int main()
{int i;while(scanf("%d%d",&n,&k)!=EOF){memset(book,0,sizeof(book));for(i=0;i<n;i++)scanf("%d",&a[i]);if(dfs(0,0)==1)printf("YES\n");elseprintf("NO\n");for(i=0;i<n;i++)if(book[i]==1)printf("%d ",a[i]);printf("\n");}return 0;
}
int dfs(int i,int sum)
{if(sum==k)return 1;if(sum>k)return 0;if(i==n)return 0;if(dfs(i+1,sum)==1){book[i]=0;return 1;}if(dfs(i+1,sum+a[i])==1){book[i]=1;return 1;}return 0;
}

NYOJ-部分和问题(dfs)相关推荐

  1. 部分和(dfs深搜回溯法)

    问题描述 给定整数序列a1,a2,.,an,判断是否可以从中选出若干数,使它们的和恰好为k, 1<=n<=20 -10^8<=ai<=10^8 -10^8<=k<= ...

  2. 部分和问题 (dfs搜索 尺取)

    部分和问题 给定整数a1, a2, a3, a4,  ..........   ,  an  ,判断是否可以从中取出若干个数,使得他们的和恰好为k  . 1  <= n <= 20 测试数 ...

  3. NYOJ 927 The partial sum problem 【DFS】+【剪枝】

    The partial sum problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 One day,Tom's girlfriend give him a ...

  4. NYOJ ~ 58 ~ 最小步数(DFS)

    代码如下: #include<stdio.h> #include<iostream> #include<algorithm> #include<string. ...

  5. 小白算法练习 NYOJ 吝啬的国度 dfs+邻接表

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...

  6. nyoj 1237 最大岛屿(dfs)

    描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王. 这是一个由海洋.岛屿和海盗组 ...

  7. C语言DFS(7)___单词拼接(NYoj 99)

    单词拼接 描述 给你一些单词,请你判断能否把它们首尾串起来串成一串. 前一个单词的结尾应该与下一个单词的道字母相同. 如 aloha dog arachnid gopher tiger rat 可以拼 ...

  8. nyoj 1237 最大岛屿【dfs】

    最大岛屿 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 2 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自 ...

  9. NYOJ 1249 物资调度(DFS+剪枝)

    题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=1249 描述 某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷.衣物.食品和血浆等物 ...

  10. NYOJ 99单词拼接(有向图的欧拉(回)路)

    1 /* 2 NYOJ 99单词拼接: 3 思路:欧拉回路或者欧拉路的搜索! 4 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 5 有向图的欧拉 ...

最新文章

  1. 一台 Java 服务器可以跑多少个线程?
  2. DIOCP (一) DIOCP常见问题。
  3. 一堂课玩转rpm包的制作
  4. Hashtable TreeMap HashMap LinkedHashMap的区别
  5. vecm模型怎么写系数_用Stata搞实证之面板模型入门
  6. JAVA1.6实现动态编译加载运行
  7. html定位的所有属性,HTML CSS定位属性详解 嘿嘿嘿
  8. 《Go 语言程序设计》读书笔记(十)反射
  9. socket,与粘包
  10. 带时限作业排序(贪心)
  11. C/C++内存问题检查利器—Purify (二)
  12. Android 编译时出现r cannot be resolved to a variable
  13. 虎牙直播Js说书人弹幕
  14. macos10.14系统:MacOS Mojave
  15. 天猫精灵服务器修改密码,天猫精灵怎么解绑 天猫精灵解绑账号方法
  16. 4.live555mediaserver-第一次select
  17. linux man 命令 详解
  18. linux性能监控工具perf,Linux性能分析中常用的工具perf介绍
  19. 华为服务器L型滑道安装步骤讲解
  20. 折分查找法递归和非递归方式

热门文章

  1. nullnullProcessing Bitmaps Off the UI Thread 处理来自UI线程的位图
  2. Josephus 线段数版
  3. 为jquery.AutoComplete添加触发事件
  4. 红旗6.0SP2发布啦!
  5. windows .bat批处理实现进程监控确保程序运行
  6. C# 各版本新增功能
  7. CodeForces413E Maze 2D
  8. Python-Day1 数据类型
  9. wireshark 抓包分析 TCPIP协议的握手
  10. php file_exists无效解决办法