4200.凑零钱

通过数:86提交数:143学校:华南理工大学考研机试真题 题目列表 标签
题目描述 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。 例如:给定了 $6$ 种钱币面值为 $2$、$5$、$10$、$20$、$50$、$100$,用来凑 $15$ 元,可以用 $5$ 个 $2$ 元、$1$ 个 $5$ 元,或者 $3$ 个 $5$ 元,或者 $1$ 个 $5$ 元、$1$ 个 $10$ 元,等等。 显然,最少需要 $2$ 个钱币才能凑成 $15$ 元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 输入格式 第一行是待凑的钱数值 $M$($1 \leq M \leq 2000$,整数),接着的一行中,第一个整数 $K$($1 \leq K \leq 10$)表示币种个数,随后是 $K$ 个互不相同的钱币面值 $K i$($1 \leq K i \leq 1000$)。 输入 $M=0$ 时结束。 输出格式 每个测试用例输出一行,即凑成钱数值 $M$ 最少需要的钱币个数。 如果凑钱失败,输出“Impossible”。 你可以假设,每种待凑钱币的数量是无限多的。 数据范围 $1 \leq M \leq 2000$,$1 \leq K \leq 10$,$1 \leq K i \leq 1000$ 输入样例 15 6 2 5 10 20 50 100 输出样例 2
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。