关闭

最少硬币问题

243人阅读 评论(0) 收藏 举报
分类:
#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;
} 

这里写图片描述

0
0
查看评论

最少硬币问题-java实现

package com.wsy.dynamic;public class DynamicCoin { /** * 最少硬币找零问题 * * @param coinValue * :不同币值的数组 * @pa...
  • wengsy_5041
  • wengsy_5041
  • 2017-08-31 17:15
  • 371

最少硬币问题--贪心算法

设有n种不同面值的硬币,各硬币的面值存于数组T〔1:n〕中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins〔1:n〕中。 对任意钱数0≤m≤20001,
  • lyflower
  • lyflower
  • 2008-03-05 14:46
  • 11468

最少硬币问题(动态规划解决)

设有n中不同面值的硬币,各硬币的面值存在于数组T[1..n]中,可以使用的面值硬币个数不限。假如现在找的钱是j,1 解决方法: 另c[i,j]代表用前中硬币兑换j所用的最少数目。#include "stdafx.h" #include #include #include...
  • tzasd89812
  • tzasd89812
  • 2012-04-24 21:30
  • 2087

最少硬币问题 动态规划

问题描述需要找零x元,有n种面值硬币,求找零最少需要硬币个数的方法。 问题分析这题如果用贪心算法做,很可能无法得到最优解甚至无法无法找零,比如要找零11元,有{5,6,10}三种硬币,最优解是{5,6},用贪心就会先用10块钱去消耗,那这题就无法完成。所以这题用动态规划最合适,利用递推和缓存,动态...
  • u013326239
  • u013326239
  • 2016-05-30 20:42
  • 696

最少硬币找零问题-动态规划

动态规划把问题分为子为题
  • KangRoger
  • KangRoger
  • 2014-06-30 21:15
  • 21984

最少找零问题与完全背包模型的一点思考

最少找零问题描述如下,有n张硬币,价值存储在一个数组中,每种硬币个数都是无限的,再给定一个要找的零钱数,然后试用最少的数目的硬币来找我们要求的数目。 比如  5,2,3,要找出20元钱,我们人工的判断几个可能,很快就可以找出最优,也就是4张5元,也就是4.    ...
  • lycommand
  • lycommand
  • 2015-10-01 16:18
  • 514

经典算法贪心法之最少硬币

有1、2、5、10、20、50、100七种面值的硬币,要支付指定的金额,问怎么支付所用的硬币个数最少。这是一个非常日常化的问题,凭直觉我们会想 到,尽可能先用大面值的硬币,这就是“贪心选择”。以下为我的代码示例:/// /// 经典算法贪心法之最少硬币 ///...
  • blackField
  • blackField
  • 2011-03-29 16:47
  • 815

最少硬币找零问题

Problem: Give you the coins, and the total amount of money to change,find a solution for this change which minimize the number of coins needed. Exam...
  • lzj509649444
  • lzj509649444
  • 2011-12-26 12:50
  • 4209

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

http://hawstein.com/posts/dp-knapsack.html 如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? (表面上这道题可以用贪心算法,但贪心算法无法保证可以求出解,比如1元换成2元的时候) 首先我们思考一个问题,如何用最少的硬币凑够i...
  • seuliujiaguo
  • seuliujiaguo
  • 2014-09-18 21:41
  • 1540

HDU 3348 coins 贪心 最少/最多硬币问题

题意是说现在给你一定数目的1角,5角,1元,5元和10元硬币,要买一个P角的东西(注意单位是毛......一开始没仔细看直接当成元算的),问最少和最多分别用多少硬币能买到,如果凑不出正好的钱,则输出“-1 -1”。     最少多少硬币比较好处理一些,直接用贪心的算法...
  • lmhacm
  • lmhacm
  • 2017-03-16 19:26
  • 425
    个人资料
    • 访问:393618次
    • 积分:11992
    • 等级:
    • 排名:第1475名
    • 原创:831篇
    • 转载:47篇
    • 译文:4篇
    • 评论:127条
    最新评论