欢迎光临散文网 会员登陆 & 注册

机试小课堂 | 动态规划·例题讲解①《最小邮票数》

2021-04-08 12:44 作者:苏世考研  | 我要投稿


苏世计算机考研,程序猿专属的学习分享社区

苏世机试小课堂,考研机试不再慌!


最小邮票数

题目描述


有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。

输入描述


有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M<100。然后是一个数N,N〈20,表示有N张邮票。接下来是N个正整数,分别表示这N张邮票的面值,且以升序排列。

输出描述


对于每组数据,能够凑成总值M的最少邮票张数。若无解,输出0。


输入 

10

5

1 3 3 3 4


输出

3


答案

①读题:


题意很明显,就是选择最少的邮票数凑成给定的总值。


②想出思路:


要求解和一致情况下的组合数最小,这里定义一个dp数组存放结果值,双重循环遍历邮票张数,第二层从n开始递减到a[i],逐渐找到最小,最后输出结果位


③动手编程:



④测试样例:

⑤提交代码:

进入下面的链接提交代码:

https://www.nowcoder.com/practice/83800ae3292b4256b7349ded5f178dd1?tpId=40&&tqId=21345&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking


⑥返回评测结果:

至此,这道题我们就已经完成了。


本题总结

动态规划典型题目,最重要的是明白两层for循环为什么这么写。


苏世学社旗下品牌,专注于计算机考研

计算机考研一手资讯,原创高质量干货

深度的学习分享丨咨询前辈丨个性化指导


机试小课堂 | 动态规划·例题讲解①《最小邮票数》的评论 (共 条)

分享到微博请遵守国家法律