NYOJ995硬币找零(简单dp)

简介:

/*
    题意:给你不同面额的硬币(每种硬币无限多),需要找零的面值是T,用这些硬币进行找零,
    如果T恰好能被找零,输出最少需要的硬币的数目!否则请输出剩下钱数最少的找零方案中的最少硬币数!
    
    思路:转换成完全背包的问题! 
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int dp[100005];

int main(){
    int n, v;
    while(cin>>n>>v && (n||v)){
        memset(dp, 0x3f, sizeof(dp));
        dp[0]=0;//不要忘记这一步 
        for(int i=1; i<=n; ++i){
            int k;
            cin>>k;
            for(int j=k; j<=v; ++j)
               dp[j]=min(dp[j], dp[j-k]+1);//这里是min,不是max 
        }
        for(int i=v; i>=0; --i)//如果遇到了找零的数目不是INF,那么就是答案! 
              if(dp[i]!=INF){
                   dp[v]=dp[i];
                 break;
              }
        cout<<dp[v]<<endl;
    } 
    return 0;
}

目录
相关文章
|
6月前
|
Java
hdu 1427 速算24点【暴力枚举】
hdu 1427 速算24点【暴力枚举】
59 0
|
6月前
|
算法
【贪心算法】|860.柠檬水找零
【贪心算法】|860.柠檬水找零
|
6月前
代码随想录 Day38 完全背包问题 LeetCode T70 爬楼梯 T322 零钱兑换 T279 完全平方数
代码随想录 Day38 完全背包问题 LeetCode T70 爬楼梯 T322 零钱兑换 T279 完全平方数
36 0
|
6月前
|
Java
leetcode-860:柠檬水找零
leetcode-860:柠檬水找零
57 0
luoguP4377 01分数规划 背包dp
luoguP4377 01分数规划 背包dp
64 0
leetcode 860柠檬水找零
leetcode 860柠檬水找零
62 0
leetcode 860柠檬水找零
每日三题-乘积最大子数组、零钱兑换、戳气球
每日三题-乘积最大子数组、零钱兑换、戳气球
85 0
每日三题-乘积最大子数组、零钱兑换、戳气球
AcWing 656. 钞票和硬币
AcWing 656. 钞票和硬币
85 0
AcWing 656. 钞票和硬币
|
算法
【动态规划法】硬币找零问题
【动态规划法】硬币找零问题
338 0
【动态规划法】硬币找零问题
AcWing 653. 钞票
AcWing 653. 钞票
92 0
AcWing 653. 钞票