问题是第一张图片上的第一行标注,这个问题已经困扰了我一下午也没有解决
算法不对,暴力解决就可以,要六重循环:
there are 4562 ways.
#include <stdio.h>
int main(int argc, char *argv[])
{
int coin1 = 1, coin2 = 2, coin5 = 5, coin10 = 10, coin20 = 20, coin50 = 50, sum = 0;
for (int a = 0; a * coin50 < 101; a++)
{
for (int b = 0; a * coin50 + b * coin20 < 101; b++)
{
for (int c = 0; a * coin50 + b * coin20 + c * coin10 < 101; c++)
{
for (int d = 0; a * coin50 + b * coin20 + c * coin10 + d * coin5 < 101; d++)
{
for (int e = 0; a * coin50 + b * coin20 + c * coin10 + d * coin5 + e * coin2 < 101; e++)
{
for (int f = 0; a * coin50 + b * coin20 + c * coin10 + d * coin5 + e * coin2 + f * coin1 < 101;
f++)
{
if (a * coin50 + b * coin20 + c * coin10 + d * coin5 + e * coin2 + f * coin1 == 100)
{
printf("50yuan %d, 20yuan %d, 10yuan %d, 5yuan %d,2yuan %d 1yuan %d\n", a, b, c, d, e,
f);
sum++;
}
}
}
}
}
}
}
printf("there are %d ways\n", sum);
}
你的if语句应该放在while循环里面
把第15行的 '}' 移到第20行的 后面:‘}}’