PAT--L3-001. 凑零钱

该博客介绍了一道编程题目,题号为PAT L3-001,内容涉及在火星商店购物时使用不同星球硬币支付且不找零的场景。博主讨论如何帮助韩梅梅通过排序硬币面值并使用深度优先搜索(DFS)策略来确定是否能精确凑出所需付款金额。题目提供输入输出样例,并指出当解不唯一时应输出最小序列。若无法凑出金额,则输出"No Solution”。

题目链接:https://www.patest.cn/contests/gplt/L3-001

题目描述:

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

输入格式:

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

输出格式:

在一行中输出硬币的面值 V1 <= V2 <= … <= Vk,满足条件 V1 + V2 + … + Vk = 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

因为题目要求输出最小序列,所以我们可以先按面值小到大的顺序将硬币排序,之后就是 DFS 了,每一个硬币要么选要么不选,这两种情况分情况处理

#include<cstdio>
[root@localhost work]# sudo find / -xdev -type f -size +100M -exec ls -lh {} \; -rw-r--r--. 1 root root 101M Feb 28 2025 /var/lib/rpm/Packages -rw-r--r--. 1 root root 156M Jun 22 2024 /var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite -rw-r--r--. 1 root root 149M Jun 22 2024 /var/cache/yum/x86_64/7/updates/gen/filelists_db.sqlite -rw-r--r--. 1 root root 117M Jun 21 2024 /var/cache/yum/x86_64/7/updates/packages/firefox-115.12.0-1.el7.centos.x86_64.rpm -rw-r--r--. 1 root root 1.1G Oct 4 23:45 /tmp/spring.log.2025-10-04.128181976214538690.tmp -rw-r--r--. 1 root root 1.7G Oct 5 15:00 /tmp/spring.log.2025-10-04.228213919973839816.tmp -rw-r--r--. 1 root root 2.3G Oct 10 23:45 /tmp/spring.log.2025-10-10.028656801304903358.tmp -rw-r--r--. 1 root root 2.7G Oct 11 23:45 /tmp/spring.log.2025-10-10.228732319985996298.tmp -rw-r--r--. 1 root root 1.5G Oct 4 15:03 /tmp/spring.log.2025-10-04.028138434113501828.tmp -rw-r--r--. 1 root root 1.4G Oct 12 15:03 /tmp/spring.log.2025-10-12.028829562166827530.tmp -rw-r--r--. 1 root root 722M Oct 9 23:45 /tmp/spring.log.2025-10-09.028624370054257272.tmp -rw-r--r--. 1 root root 681M Oct 7 23:45 /tmp/spring.log.2025-10-07.228451583042218185.tmp -rw-r--r--. 1 root root 1.1G Oct 12 23:45 /tmp/spring.log.2025-10-12.128873138133991399.tmp -rw-r--r--. 1 root root 1.1G Oct 5 23:45 /tmp/spring.log.2025-10-05.028268051194354719.tmp -rw-r--r--. 1 root root 2.8G Oct 3 23:45 /tmp/spring.log.2025-10-03.028041361425305587.tmp -rw-r--r--. 1 root root 2.7G Oct 8 23:45 /tmp/spring.log.2025-10-07.328473120035804793.tmp -rw-r--r--. 1 root root 1.7G Oct 13 15:02 /tmp/spring.log.2025-10-12.228905120362616249.tmp -rw-r--r--. 1 root root 360M Oct 13 16:04 /tmp/spring.log.2025-10-13.028959350972534024.tmp -rw-r--r--. 1 root root 739M Oct 13 23:45 /tmp/spring.log.2025-10-13.128970115527045867.tmp -rw-r--r--. 1 root root 674M Oct 14 06:53 /tmp/spring.log.2025-10-14.029002515536531512.tmp -rw-r--r--. 1 root root 102M Nov 12 2024 /usr/lib/locale/locale-archive -rw-r--r--. 1 root root 208M Sep 23 10:25 /opt/nubosh/vmsec-host/pat/av/qowl.tgz 执行结果
最新发布
10-15
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值