求助一个兑换零钱的问题,求大神

jzzlee 2015-03-05 01:59:16
一个字典{2: 2, 3: 2, 4: 3, 5: 1},key是零钱面额,value是零钱数量,求兑换n元的一种方案,要求该方案优先使用低面额的零钱。如{2:2,3:1,4:1},兑换4元,使用2两张而不用4一张。
多谢!
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bear234 2015-03-05
  • 打赏
  • 举报
回复
greedy algorithm
靠谱的小号 2015-03-05
  • 打赏
  • 举报
回复
又想了下。我擦嘞,这不是一背包问题的特例嘛,我又sb了,怪不得总感觉似曾相识。 lz可以直接百度“背包问题”,忽略我上面的答案吧。
靠谱的小号 2015-03-05
  • 打赏
  • 举报
回复
这个应该是类似于约瑟夫环问题的,分为模拟、公式两种方法(穷举法这里忽略)。 公式法,本人智商不足,没想出来,提一个模拟法的思路: 1、钱包零钱排序,变为{2,2,3,3,4,4,4,5} 2、零钱包中零钱的次序一张一张的出。 3、当找出的零钱总额超出需要的数量时,遍历已经找出的零钱,若删除其中某项可使得结果刚好吻合,则找到该解 4、若删除任意一项均不行,则删除最大项。 例如:找零21元: 1) 2 =2 2) 2.2 =4 3) 2.2.3 =7 4) 2.2.3.3 =10 5) 2.2.3.3.4 =14 6) 2.2.3.3.4.4 =18 7) 2.2.3.3.4.4.4 =22 8) 2.2.3.3.4.4 =18(删除最大项4) 9) 2.2.3.3.4.4.5 =23 10) 2.3.3.4.4.5 =21
jiht594 2015-03-05
  • 打赏
  • 举报
回复
简单暴力的方法 就是求出全部组合数, 然后找吧

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧