第6章过程封装--函数.ppt
解法1 --分治法 如果我们可以用一个硬币找零,这就是最小的。 否则,对于每个可能的值i,我们可以独立计算找i分钱零钱和K-i分钱需要的最小硬币数。然后选择这个和最小的i。 怎样找出63分钱零钱 找出1分钱零钱和62分钱零钱分别需要的硬币数是1和4。因此,63分钱需要使用五个硬币。 找出2分钱和61分钱分别需要2和4个硬币,一共是六个硬币。 我们继续尝试所有的可能性。我们看到一个21分和42分的分解,它可以分别用一个和两个硬币来找开,因此,这个找零问题就可以用三个硬币解决。 我们需要尝试的最后一种分解是31分和32分。我们可以用两个硬币找出31分零钱,用三个硬币找出32分零钱,一共是五个硬币。 因此最小值是三个硬币。 int coin(int k) { int i, tmp, int coinNum = k; if (能用一个硬币找零) return 1; for (i=1; ik; ++i) if ((tmp = coin(i) + coin(k-i)) coinNum) coinNum = tmp; return coinNum; } 上述解法分析 此算法的效率很低 事实上63分钱找零的问题是不会在一个合理的时间内解决的。就如Finbonacci 函数一样 解法2 通过指定其中的一个硬币来递归地简化问题。 例如,对于63分钱,我们可以给出以
您可能关注的文档
最近下载
- 排水管道检测专项方案.doc VIP
- 2025广西桂林国民村镇银行招聘(公共基础知识)测试题附答案解析.docx VIP
- 2025年河南机关事业单位工勤技能岗位等级考试(农机驾驶维修工·技师/二级)历年参考题库含答案详解.docx VIP
- 工会劳动保护复习试题.doc VIP
- 《葬花吟》尤克里里F调单音谱.pdf VIP
- 2025广西桂林国民村镇银行招聘历年题库附答案解析.docx VIP
- 16S524 塑料排水检查井-井筒标准图集直径Φ700~Φ1000.pdf VIP
- 2022工会安全生产劳动保护知识竞赛题库(含答案).docx VIP
- 洗涤剂A类产品允许使用的原料(成分)名单、采样方法.pdf VIP
- 19DX101-1 建筑电气常用数据.pdf VIP
原创力文档

文档评论(0)