美文网首页
动态规划解决找零问题

动态规划解决找零问题

作者: mztkenan | 来源:发表于2016-12-20 21:47 被阅读223次

问题描述:

有n种币值的货币,收银员要找total的零钱,问找到的最小张数的零钱是多少。例如找13元,币值为5,2,1,最小张数为4张,为5*2+2+1。

输入:

第一行输入一个整数n,表示n种币值的货币。
再输入具体币值。
最后输入要找零钱。

输出:

输出一行,就是所找零钱张数的最小值。

样例输入:

3
5 2 1
13

样例输出:

4


源代码:

#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
const int INF=100000;
int main()
{
    int i,n,temp,total,number;
    printf("请输入货币种类共多少个:\n");
    scanf("%d",&n);
    int value[n];       //存取每个纸币币值
    int num[n];         //存取每个纸币数量

    printf("请输入每种货币的币值,最小币值为1,保证有解:\n");
    for(int i=0;i<n;i++){
        scanf("%d",&temp);
        value[i]=temp;
    }
    printf("请输入需要找零总和:");

    scanf("%d",&total);
    int d[total+1];           //存取每个找零值所需要最小的纸币张数
    d[0]=0;
    for(int i=1;i<=total;i++){
            d[i]=INF;         //一定要附初值,之前认为反正挺大没关系,最后发现也可能初值很小,有影响
        for(int j=0;j<n;j++){
            if(i>=value[j]){   //边界值一定要注意
                d[i]=min(d[i],d[i-value[j]]+1);
            }
        }
    }
    printf("以下为找零最少纸币数:%d\n",d[total]);
    return 0;
}

易错点总结

1.判断条件时i>=value[j],一定不能忘了=号。=号表示刚好可以找完。一定要关注边界值。
2.数组一定要附初值,不然可能大可能小,让人摸不着头脑。
3.虽然得出了最小张数,但是路径如何记录是个问题?

参考文章

下面两个方法都是从动态规划来解决的,但是思路不太相同,可以借鉴
参考方法1 状态迁移点在求前几个状态
参考方法2 状态迁移点在最后一个货币

相关文章

  • 动态规划解决找零问题

    问题描述: 有n种币值的货币,收银员要找total的零钱,问找到的最小张数的零钱是多少。例如找13元,币值为5,2...

  • 2019-05-26LeetCode39. 组合总和 可重复提取

    唯一要注意的就是顺序重复,每次往下迭代的时候不是所有数字都为候选集。16min 动态规划解决找零问题使用找零动态规...

  • 动态规划: 找零问题

    问题描述 现实生活中经常遇到找零钱的问题。假设去超市购物买了一个售价为3毛7分的商品,你给售货员1元(1元 = 1...

  • 浅层理解动态规划及利用动态规划解决最长公共子串等问题

    动态规划基本思想 动态规划的工作原理是先解决子问题,再逐步解决大问题。 用动态规划解决旅游规划问题 目前面对的问题...

  • 什么是动态规划

    目录 动态规划解决了什么 什么是动态规划 典型的动态规划 1. 动态规划解决了什么 的思想就是将大问题拆分成小问题...

  • 算法思想之动态规划(三)——找零钱问题

    前言 今天我们继续讨论经典的动态规划问题之找零钱问题。 找零钱问题 问题描述 假设你是一名超市收银员,现有种不同面...

  • 找零问题与动态规划

    今天岩岩抛出了一道 code war 上的题目,大意如下: 一个函数接收两个参数,第一个参数是数字,第二个参数是数...

  • 硬币找零问题——动态规划

    问题阐述 给定一些面值的硬币(数量不限)和需要找零的金额,求一个找零所需硬币数最少的方案。现实生活中因其面值的特殊...

  • 13.2 【动态规划】js解决硬币找零问题

    动态规划与分治法不同之处在于分治法是将整体转变为数个相对独立的子问题,求解后组合 而动态规划则是将整体变为相互关联...

  • 动态规划(1)

    什么动态规划 动态规划是一种解决棘手问题的方法,它将问题分成小问题,并着手先解决这些小问题 动态规划的使用场景 g...

网友评论

      本文标题:动态规划解决找零问题

      本文链接:https://www.haomeiwen.com/subject/geufvttx.html