【题解】换钱的最少货币数

换钱的最少货币数

http://www.nowcoder.com/questionTerminal/4e05294fc5aa4d4fa8eacef2e606e5a8

表示组成 价值需要的最少的货币数
如果目前情况下价值目前最少能由 个货币组成,那么加了一个 价值的商品,就可以由个货币组成
对于每一个物品,从循环一遍,更新dp的值。所有的物品都加入完毕以后,就是结果。

#include<iostream>

using namespace std;
const int INF = 0x3f3f3f3f;
int main()
{
    int n,m;
    cin >> n >> m;
    int arr[1010],dp[5010]={0};
    for(int i = 0 ; i < n ; i++)
    {
        cin >> arr[i];
    }
    for(int i = 1 ; i <= m ; i++)
    {
        dp[i]= INF;
    }
    for(int i = 0 ; i < n ; i++)//对每个物品进行遍历
    {
        for(int j = 0 ; j <= m-arr[i] ; j++)//对每个价值进行遍历
        {
            if(dp[j]!=INF)
            {
                dp[j+arr[i]] = min(dp[j+arr[i]],dp[j]+1);
            }
        }
    }
    if(dp[m]==INF){cout<<"-1"<<endl;}
    else cout<<dp[m]<<endl;
    return 0;
}
全部评论
妙啊qcjj!!想了一年没想通为什么,只有你寥寥数笔点通思路!!一眼就看懂啦!!
点赞 回复 分享
发布于 2020-10-10 22:40
点赞 回复 分享
发布于 2020-10-10 12:28

相关推荐

评论
6
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务