最少硬币问题

原创 2015年11月18日 11:50:01
#include "iostream"
#include "algorithm"
#include "fstream"
using namespace std;
#define INF 100000

/*
f[j]表示所找钱数为j,需要的最少硬币数
f[j] = min{f[j], f[j-ti]+1}
 */

int f[100];
int t[100];  //面额
int num[100]; //对应面额的硬币数量


int min(int a, int b)
{
    return a<b? a:b;
}

int solve(int n, int m)
{
    for(int j=1; j<=m; j++)
        f[j] = INF;

    for(int i=1; i<=n; i++)  //硬币种数
        for(int k=1; k<=num[i]; k++)  //相应硬币个数
            for(int j=m; j>=t[i]; j--)  //要找的钱
                f[j] = min(f[j], f[j-t[i]]+1);

    return f[m];
}

int main()
{
    ifstream fin("coins.txt");
    int n;
    fin >> n;
    cout << "硬币种数为:" << n;
    cout << "\n各种硬币面值及对应数量分别为:\n";
    for(int i=1; i<=n; i++)
    {
        fin >> t[i] >> num[i];
        cout << t[i] << " " << num[i] << endl;
    }
    int m;
    fin >> m;
    cout << "要找的钱数为:" << m << endl;
    cout << "最少硬币数为:" << solve(n, m) << endl;
    fin.close();
    return 0;
} 

这里写图片描述

版权声明:本文为博主原创文章,转载请注明出处。 举报

相关文章推荐

最少硬币问题

硬币个数有限,要求用最少的硬币找钱。书上的一道练习题,感觉挺有趣的。 假设各种硬币面值t[i](顺排),个数c[i],C[i][j]为用t[0]..t[i]面值的硬币找钱j的最少硬币个数 则C[i...

最少硬币问题

硬币找零 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

最少硬币问题

问题描述: 设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。对任意钱数0≤m≤20001,设...

【dp】最少硬币问题

问题描述:  设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币  来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。  对任意钱数0≤m...

最少硬币问题

Description 设有n种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。对任意钱数0≤m≤200...

最少硬币问题

假设有3种不同的硬币,币值分别是CoinValue[] = {1, 2, 5},每一种硬币的数量是有限的,分别是CoinNum[] = {3, 3, 3},给定一个数值target=18,找出一种硬币...

南邮-1221-最少硬币问题

最少硬币问题 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:174            测试通过:50 描述 ...

最少硬币问题 动态规划

问题描述需要找零x元,有n种面值硬币,求找零最少需要硬币个数的方法。 问题分析这题如果用贪心算法做,很可能无法得到最优解甚至无法无法找零,比如要找零11元,有{5,6,10}三种硬币,最优解是{5,...

南邮 OJ 1221 最少硬币问题

最少硬币问题 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 207     &#...

动态规划——最少硬币问题

http://hawstein.com/posts/dp-knapsack.html 如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? (表面上这道题可以用贪心算法,但...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)