兑换硬币问题
兑换硬币问题是C语言的一个经典问题。题目如下:
现有一张1元纸币,欲将其兑换为1分、2分、5分硬币共60枚,请列出所有兑换方案。
我们可以利用分支和循环来解决这个问题。
最简单的方法——三重循环法
最“无脑”也是最容易想到的方法是利用三重循环。其代码如下所示:
#include <stdio.h>
int main (void)
{
int i = 0;
int one, two, five;
for (one = 0; one <= 60; one++)
{
for (two = 0; two <= 50; two++)
{
for (five = 0; five <= 20; five++)
{
if ((one * 1 + two * 2 + five * 5 == 100) && (one + two + five == 60))
{
i++;
printf ("兑换方案%2d:1分硬币%2d枚,2分硬币%2d枚,5分硬币%2d枚\n", i, one, two, five);
}
}
}
}
printf ("共有%d种兑换方案\n", i);
return 0;
}
输出结果如下:
兑换方案 1:1分硬币20枚,2分硬币40枚,5分硬币 0枚
兑换方案 2:1分硬币23枚,2分硬币3