题目如下:把一元五角钱兑换成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的取值全部取出来。
这得到了所有方案中的各个硬币的个数。
之后,我们只需再定义一个变量来统计方案个数即可。
这样,这题便完美解决了。
因篇幅问题不能全部显示,请点此查看更多更全内容