面试算法问题

面试算法问题

老师好,之前在面试的时候遇到了一个算法题,没有什么思路,希望老师有时间的时候能帮我解答一下

小明有1元硬币a个,2元硬币b个,5元硬币c个,现在小明想把这些硬币分给其他人,要求:

每种硬币,最多拿1个;

每个人拿到的钱数不同;

问,小明最多分给多少个人硬币?

输入,a.b.c三个整数;

输出 分给最多的人数; 


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2020-08-13 03:19:21

每种硬币最多只能使用 1 个,那其实三种硬币组成的不同的钱数只能有 7 种组合,对应 001,010,011,100,101,110,111。


用回溯法遍历一遍所有这 7 种钱数的组合,看每一中组合能不能被 a,b,c 覆盖。如果能,记录这个组合分给了多少人。取最多的。一共 7 种钱数,回溯 2^7 不过 128 种可能。


这是一个典型的回溯问题。对回溯算法的学习,建议看我的《玩转算法面试》:https://coding.imooc.com/class/82.html 


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师