L3-001 凑零钱 (30 分)

韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 10​4​​ 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。

输入格式:

输入第一行给出两个正整数:N(≤10​4​​)是硬币的总个数,M(≤10​2​​)是韩梅梅要付的款额。第二行给出 N 枚硬币的正整数面值。数字间以空格分隔。

输出格式:

在一行中输出硬币的面值 V​1​​≤V​2​​≤⋯≤V​k​​,满足条件 V​1​​+V​2​​+...+V​k​​=M。数字间以 1 个空格分隔,行首尾不得有多余空格。若解不唯一,则输出最小序列。若无解,则输出 No Solution

注:我们说序列{ A[1],A[2],⋯ }比{ B[1],B[2],⋯ }“小”,是指存在 k≥1 使得 A[i]=B[i] 对所有 i<k 成立,并且 A[k]<B[k]。

输入样例 1:

8 9
5 9 8 7 2 3 4 1

输出样例 1:

1 3 5

输入样例 2:

4 8
7 2 4 3

输出样例 2:

No Solution

要判所有硬币加起来总金额少于m,就没有必要搜了,这个是最后一个点,不写的话只有29分~

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
#define inf 0x3f3f3f3f
#define LL long long
int n,m,a[10005],pre[10005],f;
int out[10005],l=0;
void dfs(int t,int sum)
{//printf("t=%d sum=%d\n",t,sum);if(t==n||f)return;if(sum==m){f=1;while(t!=-1){out[l++]=a[t];t=pre[t];}return;}for(int i=t+1;i<n;i++){if(sum+a[i]<=m){pre[i]=t;dfs(i,sum+a[i]);}//else break;}
}
int main()
{int i,j,s=0;f=0;memset(pre,-1,sizeof pre);scanf("%d%d",&n,&m);for(i=0;i<n;i++){scanf("%d",&a[i]);s+=a[i];}if(s<m)printf("No Solution\n");else{sort(a,a+n);dfs(-1,0);if(f==0)printf("No Solution\n");else{for(i=l-1;i>=0;i--)printf("%d%c",out[i],i==0?'\n':' ');}}
}

L3-001 凑零钱 深搜相关推荐

  1. 【codevs1116】四色问题,深搜入门题目

    (说实话我已开始是不想写这道题目的,因为太水了,但是发现最近实在是打不出什么好一些的题目,所以就凑活一下好了) 1116 四色问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄 ...

  2. 深入递归、深搜dfs、回溯、剪纸学习。

    深入递归,深搜dfs,回溯,剪枝 参考于博客 一.双管齐下解递归 "逐步生成结果"类问题之数值型 自下而上的递归(递推,数学归纳,动态规划) 解决简单情况下的问题. 推广到稍复杂情 ...

  3. PAT 团体程序设计天梯赛-练习集 题解(凑零钱,堆栈,社交集群)

    开始准备cccc(cry)天梯赛了,第一周训练题,把官网挂出的训练题刷完了,对pat有了一点点的熟悉感. L1-1  就不说了... L1-2 打印沙漏 一个变量保存空格数,一个变量保存沙漏符号数,打 ...

  4. 算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记

    算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记 前言 深搜与广搜 搜索的核心概念 问题求解树 搜索剪枝和优化 问题求解树的状态 对比深搜与广搜 DFS-深度(deep ...

  5. 算法很美:水洼数(dfs)深搜

    题目描述 Descriptions: 由于近日阴雨连天,约翰的农场中中积水汇聚成一个个不同的池塘,农场可以用 N x M (1 <= N <= 100; 1 <= M <= 1 ...

  6. Go 分布式学习利器(15) -- Go 实现 深搜和广搜

    强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...

  7. 水管工游戏 (深搜)

    水管工游戏 本题依然是采用搜索,深搜,广搜都可以,本代码采用深搜,此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可. 代码如下: #include<stdio.h> int a[ ...

  8. L3-001 凑零钱(dfs+玄学剪枝=AC)

    题目链接:L3-001 凑零钱 梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有 10^​4 ​​ 枚 ...

  9. Poj(2488),按照字典序深搜

    题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...

最新文章

  1. Struts2+Spring详解
  2. centos不允许root直接登陆
  3. VC中获取窗体句柄的各种方法
  4. c语言大数相加怎么写,大数相加
  5. 前端学习(2165):vuecli3配置文件的修改和查看
  6. 小型网络的组建及排错
  7. 1.android体系结构介绍
  8. linux格式化nfs,NFS协议详解与配置实现
  9. 那些年,我们解析过的前端异常
  10. CEF3中js调用delphi内部方法
  11. Zend Famework 2 | 如何在自定义类中使用Service Manager
  12. 乡镇医院计算机管理,乡镇卫生院管理系统
  13. matlab读取txt文档三行数据库,Matlab中的textread textscan读取文本文件
  14. xp系统查计算机设备型号,xp电脑设备型号怎么查询
  15. 提供风声无组件上传类V2.11下载 解决图片尺寸读取问题
  16. android 测试键值,Android无线测试之—KEYCODE键值对应大全
  17. (由Active Desktop保存在桌面引起)桌面图标蓝底
  18. 算法分析:大O符号/大Ω符号/大Θ符号/小o符号/小w符号
  19. QT ACTIVEX最新操作WORD文档的一些心得
  20. DNS安全 DNS缓存投毒与防护

热门文章

  1. 三种常见Content-Type格式,最后一种你肯定用过
  2. 小学生计算机学科竞赛类活动,学科竞赛活动方案.doc
  3. CGB2106-Day04
  4. 【密码学】RSA的攻与防_4.0
  5. 一个人失眠,全世界失眠
  6. The Things Network LoRaWAN Stack V3 学习笔记 2.7 编译运行 Web 前端
  7. 经济学原理笔记-微观CP1-经济学十大原理
  8. 车联网V2X通信技术及应用介绍
  9. 计算机组成原理中的MPY指令,8位算术逻辑运算
  10. SSM驾校预约练车管理系统 计算机毕设源码27864