+ -
当前位置:首页 → 问答吧 → 算法题:凑成指定金额最少需要多少个货币

算法题:凑成指定金额最少需要多少个货币

时间:2010-08-05

来源:互联网



给大家出一道算法题,我自己编的,呵呵。

题目就是:凑成指定金额最少需要多少个货币。以RMB为例,凑成67.5需要一张50、一张10块、一张5块、一张2块、一张5毛,最少需要5枚货币。

那么如果货币系统和RMB不同,只含有1元、3元、8元、9元、20元……这种不怎么规则的面值呢,凑成金额 n 最少需要多少枚货币?

注:不必计算出最少需要哪些货币,只计算需要多少枚即可。

PS: 在JavaEye上发过这个,可惜没有答对的。看看这里有没有人能答对,

作者: ggggqqqqihc   发布时间: 2010-08-05

可能我想的简单,直接取余数了

作者: soni   发布时间: 2010-08-05

呵呵,这题有陷阱,不能简单采用贪心算法

作者: 四不象   发布时间: 2010-08-05

如果要凑16元,按照贪心算法则得9+3+3+1,而事实上8+8才是最优解。

分两步:
1、用贪心算法求出最优解。
2、在用有限穷举法查找有无更优的解

应该有更好的方法

作者: 四不象   发布时间: 2010-08-05

这个在<算法导论>的huffman章节有详解

作者: bs   发布时间: 2010-08-05

专业解释为:NP完全问题,使用动态规划解决,没有高效解决办法

谁能解决,诺贝奖就到手了

作者: bs   发布时间: 2010-08-05