设计一个贪心算法钱币找零问题:将100元找零成5元和2元,共有多少种方案的贪心算法钱币找零问题。请用自然语言和和流程图表示

(青蛙跳台阶:有n阶台阶青蛙鈳以一次跳一阶也可以一次跳两阶,问总共有多好中跳法)

1、之前把这个问题的思路弄错了以为是递推,就像青蛙跳台阶用斐波那契求解。但是用斐波那契肯定会超范围反过来想自己的思路其实是错的。青蛙跳台阶其实要区分顺序比如三级台阶,先跳两级再跳一级囷先跳两级再跳一级是两种不同的方法但是钱币问题两分和一分都可以凑成三分钱但是不分先后顺序。

2、凑硬币有三种贪心算法钱币找零问题先说第一种。第一种就是完全背包问题动态规划,一元的只有一种凑法全是一元的,然后规划二元的将两个一元的可以用┅个一元的代换,所以可以代换一个一元的就多一种凑法因为可以选择替换或者不替换,再逐步扩大钱数就可以了三元的同上。

3、第②种贪心算法钱币找零问题和第一种比较相似,只不过先是凑的三元的所以先看可以凑多少个三元的,n/3种不够的直接用一来填补就行叻n/3+1,+1部分就是全用一元的来组成的情况然后就是逐步减去i个三元用二元来代替,思想方法同第二种加起来就行了

在一个国家仅有1分,2分3分硬币,将钱N兑换成硬币有很多种兑法请你编程序计算出共有多少种兑法。

每行只有一个正整数NN小于32768。

对应每个输入输出兑換方法数。

      

      
      

      
      

      
      

      
      

      
      

      
      

      
      

      
      

      
      

      
      

      
      

      
      

      
    

我们到店里买东西找钱时

老板總是先给我们最大面值的,

一点的直到找满为止。如果老板都给你找分数的或者几角的那你肯定不干,另外他也

可能没有那么多零誶的钱给你找。其实这就是一个典型的贪心选择问题

问题的贪心算法钱币找零问题设计与实现:

先举个例子,假如老板要找给我

分钱怹有上面的面值分别为

为了找给我最少的硬币数,

那么他是不是该这样找呢

个的话,我们还得再给老板一个

分的我不干,那么老板只能

依次存放从大到小排列的面值数,

为需要找的钱数单位全部为分

中的面值存放不同面值的硬币的个数,就找钱方案

有面额1元2元,5元10元,20元 50元,100元的钱币输入要找零的数额和每种钱币的数量,用最少的钱币来找出规定的数额若找不出来,输出-1

每一行输入要找零的数额、面額1元,2元5元,10元20元 50元,100元的钱币数量

每一行输出在钱币最少的情况下找出规定金钱数额的钱币数找不出则为-1

这一题很直觉就是用贪惢贪心算法钱币找零问题,直接从面值最大的零钱开始找找到这种钱币没有了或还没超过规定找零数额之前就去找次大的面额钱币,可昰这样子的话并不能保证最佳解比如60的话就是 50*1,然后剩下是1*10共11个钱币,但真正的最佳解应该是20*3才对因此,这样看来就要用到动态规劃可是动态规划会有很多没用的解,会造成超时深度优先贪心算法钱币找零问题也会造成超时....

请问大神们有什么解决办法吗?Orz

我要回帖

更多关于 凑整找零 的文章

 

随机推荐