• codevs 3961 硬币找零【完全背包DP/记忆化搜索】


    题目描述 Description

        在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资。 我们应该注意到,人民币的硬币系统是100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数。但不幸的是:我们可能没有这样一种好的硬币系统,因此用贪心算法不能求出最少的硬币数,甚至有些金钱总数还不能用这些硬币找零。例如,如果硬币系统是40,30,25 元,那么37元就不能用这些硬币找零;95元的最少找零硬币数是3。又如,硬币系统是10,7,5,1元,那么12 元用贪心法得到的硬币数为3,而最少硬币数是2。 

        你的任务就是:对于任意的硬币系统和一个金钱数,请你编程求出最少的找零硬币数;如果不能用这些硬币找零,请给出一种找零方法,使剩下的钱最少。 

    输入描述 Input Description

        第1 行,为N 和T,其中1≤N ≤50 为硬币系统中不同硬币数;1≤T≤100000 为需要用硬币找零的总数。 

        第2 行为N 个数值不大于65535 的正整数,它们是硬币系统中各硬币的面值。 

    输出描述 Output Description

        如T 能被硬币系统中的硬币找零,请输出最少的找零硬币数。 

        如T 不能被硬币系统中的硬币找零,请输出剩下钱数最少的找零方案中的最少硬币数。 

    样例输入 Sample Input

        4 12 

        10 7 5 1

    样例输出 Sample Output

        2

    数据范围及提示 Data Size & Hint

    青铜水题

    【题意】:题意:先输入n和m,下一行输入n种硬币,每一种都有一个面值。 问组成m所需要的最少的硬币数量.完全背包问题。 虽然题目中涉及到可不可以组成,可以的时候,如同第一组数据,最小硬币数为2、 不能组成的时候,如同第二组数据,补充现有硬币面值的个数,看达到m时最小的数量 

    【代码】:

    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<iostream>
    #include<stack>
    #define maxn 100005
    #define maxm 505
    #define INF 0x3f3f3f3f
    #define ll long long
    using namespace std;
    
    
    int a[55];
    int dp[maxn];
    
    int main()
    {
        int n,m;
        while(cin>>n>>m)
        {
            for(int i=1;i<=n;i++)
                cin>>a[i];
            for(int i=0;i<=m;i++)
                dp[i]=INF;
            dp[0]=0;
            for(int i=1;i<=n;i++){
                for(int j=a[i];j<=m;j++){
                    dp[j]=min(dp[j],dp[j-a[i]]+1);
                }
            }
            printf("%d
    ",dp[m]);
        }
    }
  • 相关阅读:
    Robot Framework (十)html基础
    Robot Framework (九)Selenium的安装
    Robot Framework (八)循环&分支
    Robot Framework (七)Keyword 关键字
    约瑟夫环问题的两种解法(详解)
    msdn
    java同一个包中,类之间的的调用
    循环语句中break 与 continue的区别
    memset()函数
    DFS(深搜)算法
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8955351.html
Copyright © 2020-2023  润新知