L3-001 凑零钱 (30 分)

简介: L3-001 凑零钱 (30 分)

韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 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:

1. 8 9
2. 5 9 8 7 2 3 4 1

结尾无空行


输出样例 1:

1 3 5

结尾无空行


输入样例 2:

1. 4 8
2. 7 2 4 3

结尾无空行


输出样例 2:

No Solution


#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int n,m,cnt,t,k;
int a[N],ans[N];
void dfs(int u,int sum)
{
    if(sum>m) return ;
    if(sum==m)
    {
        t=1;
        cout<<ans[0];
        for(int i=1;i<k;i++) cout<<' '<<ans[i];
        return ;
    }
    for(int i=u;i<n;i++)
    {
        ans[k++]=a[i];
        dfs(i+1,sum+a[i]);
        if(t) break;
        k--;
    }
}
int main()
{
    cin>>n>>m;
    for(int i=0;i<n;i++) cin>>a[i],cnt+=a[i];
    sort(a,a+n);
    if(cnt<m) cout<<"No Solution";
    else
    {
        dfs(0,0);
        if(!t) cout<<"No Solution";
    }
    return 0;
}


目录
相关文章
【Java每日一题,动态规划,零钱兑换模板题】硬币组合数量
【Java每日一题,动态规划,零钱兑换模板题】硬币组合数量
|
算法
代码随想录算法训练营第四十三天 | LeetCode 518. 零钱兑换 II、377. 组合总和 Ⅳ
代码随想录算法训练营第四十三天 | LeetCode 518. 零钱兑换 II、377. 组合总和 Ⅳ
70 1
|
9月前
|
存储 算法 程序员
【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍
【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍
159 0
L2-028 秀恩爱分得快 (25 分)
L2-028 秀恩爱分得快 (25 分)
169 0
|
机器学习/深度学习
【刷穿 LeetCode】1109. 航班预订统计 :「差分」&「线段树」
【刷穿 LeetCode】1109. 航班预订统计 :「差分」&「线段树」
算法练习Day44|70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数
算法练习Day44|70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
261 0
【每日一道智力题】之海盗分金币(上)
【每日一道智力题】之海盗分金币(上)
298 0
|
算法
代码随想录训练营day44| 518. 零钱兑换 II 377. 组合总和 Ⅳ
代码随想录训练营day44| 518. 零钱兑换 II 377. 组合总和 Ⅳ
136 0
【寒假每日一题】AcWing 3400. 统计次数(补)
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
63 0