搜索
您的当前位置:首页正文

经典题目:一元五角兑换成1分、2分、5分的硬币

来源:易榕旅网

题目如下:把一元五角钱兑换成5分、2分、1分钱的硬币(每一种都要有)共100枚,问一共有多少种方案?不同方案中,每种硬币各有多少枚?

解答如下:

include<stdio.h>
int main()
{
	float a, b, c, d;
	int i=0, e, f, g;
    printf("五分 二分 一分\n");
	for(e=1;e<=30;e++)
	for(f=1;f<=75;f++)
	{
		g = 100 - e - f;
		if(e*5+f*2+g==150)
		{
			printf(" %-5d%-5d%-5d\n", e, f, g);
			i++;
		}
	}
	printf("一共有%d种方案", i);
    return 0;
 }

该原理非常简单,即简单的枚举原理。

首先,我们用e,f,g分别表示5分、2分、1分的硬币枚数。

我们对第一处for语句进行分析,首先,对e进行赋值,将e赋值为1,之后,进行表达式二——e<=30进行判别,判别为真,便执行for后面的第一个语句,即进入嵌套的二级循环,在二级循环中,将会把e=1时所有f、g的取值一一枚举出来,再进行判断,若符合题目要求,便输出,不符合,便不输出。

再此之后,二重循环结束,重新回到一级循环,执行表达式三,对e重新赋值,之后便重复以上操作,直到将所有符合题目要求的e,f,g的取值全部取出来。

这得到了所有方案中的各个硬币的个数。

之后,我们只需再定义一个变量来统计方案个数即可。

这样,这题便完美解决了。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top