200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 计算机编程竞赛怎么入门 acm编程比赛入门题目集..pdf

计算机编程竞赛怎么入门 acm编程比赛入门题目集..pdf

时间:2021-12-25 01:39:27

相关推荐

计算机编程竞赛怎么入门 acm编程比赛入门题目集..pdf

最少钱币数:

【问题描述】

这是一个古老而又经典的问题。 用给定的几种钱币凑成某个钱数, 一般而言有多种方式。 例

如:给定了 6 种钱币面值为 2、5、 10、20、 50、 100,用来凑 15 元,可以用 5 个 2 元、 1

个 5 元,或者 3 个 5 元,或者 1 个 5 元、 1 个 10 元,等等。显然,最少需要 2 个钱币才能

凑成 15 元。

你的任务就是, 给定若干个互不相同的钱币面值, 编程计算, 最少需要多少个钱币才能凑成

某个给出的钱数。

【要求 】

【数据输入 】输入可以有多个测试用例。 每个测试用例的第一行是待凑的钱数值 M (1 <= M

<= 2000 ,整数),接着的一行中,第一个整数 K (1 <= K <= 10 )表示币种个数,随后是 K

个互不相同的钱币面值 Ki(1 <= Ki <= 1000) 。输入 M=0 时结束。

【数据输出 】每个测试用例输出一行,即凑成钱数值 M 最少需要的钱币个数。如果凑钱失

败,输出“ Impossible ”。你可以假设,每种待凑钱币的数量是无限多的。

【样例输入 】

15

6 2 5 10 20 50 100

1

1 2

0

【样例输出 】

2

Impossible

/****************

* 年 5 月 19 日 * cin>>b;

****************/ for( i=1;i<=b;i++)

cin>>s[i];

#include

/* 冒泡排序 排出从大到小的钱币面额顺序 */

#include

for( i=1;i<=b;i++)

using namespace std;

for(j=1;j<=b-i;j++)

int m[1000]; if(s[j]>s[j+1])

int M; {

int p; c=s[j];

s[j]=s[j+1];

int check() { // 找出最少钱币数,并返回其值

s[j+1]=c;

int b,c,d=0;

}

int p=0;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。