zoukankan      html  css  js  c++  java
  • 最少硬币问题

    <<问题描述:

      有n种不同面值的硬币,各硬币面值存于数组T[1:n];现用这些面值的钱来找钱;各面值的个数存在数组Num[1:n]中。 对于给定的1<=n<=10,硬币面值数组、各面值的个数及钱数m,0<=m<=2001,编程计算找钱m的最少硬币数。

      input : 第一个数字n,后面n行每行两个数,面值T[i],面值个数Num[i];最后是钱数m。

      output:最少硬币数。

    Sample intput :

                3

                1 3

                2 3

                5 3

                18

    Sample output:

                5

    <<算法分析: 

        若用动态规划的话,设f(i,Si)表示在剩余钱数为i,以及剩余硬币的状态为Si时的最小硬币组合数。Si在最开始可以表示为(3,3,3),各个硬币的数量各三个。若当前Si=(m,n,p)
      f(i,Si) = min(f(i-5, Si1) (i>5, Si1=(m-1,n,p)),f(i-2, Si2) (i>2, Si2=(m,n-1,p)),f(i-1, Si3) (i>1, Si3=(m,n,p-1)),) + 1。

  • 相关阅读:
    Linux网络配置
    配置bash以及bash初始化
    文本提取、分析和修改工具
    标准输入输出和管道
    文件和文件夹管理
    用户、组和权限
    vim工具使用
    Linux获取命令帮助的方法
    Linux知识整理-入门和体验
    Robot Framework简易复刻版-未完成
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2951453.html
Copyright © 2011-2022 走看看