#include
int main(void)
{
int n, fen5, fen2, fen1 = 0, i = 0;
scanf("%d", &n);
while (i <= n)
{
for (fen5 = 1; fen5 * 5 < 150; fen5++)
{
for (fen2 = 1; 150 - fen5 * 5 - fen2 * 2 > 0; fen2++)
{
for(fen1=1;fen1<98;fen1++)
{
if (fen5*5+fen2*2+fen1==150&&fen5 + fen2 + fen1 == 100)
{
printf("%d %d %d\n", fen5, fen2, fen1);
i++;
if(fen5==29&&fen2==2&&fen1==2)
goto loop;
if (i < n)
break;
if(i==n)
goto loop;
}
}
}
}
}
loop:
return 0;
}
的解答思路和尝试过的方法 :就嵌套循环啊,找不到问题在哪
输入格式:
输入为一个正整数n,表示要求输出前n种可能的方案。方案的顺序,是按照5分硬币从少到多排列的。
输出格式:
显示前n种方案中5分、2分、1分硬币各多少枚。每行显示一种方案,数字之间空一格,最后一个数字后没有空格。
注意:如果全部方案不到n种,就顺序输出全部可能的方案。
for (fen2 = 1; 150 - fen5 * 5 - fen2 * 2 > 0; fen2++)
把这句话改成
for (fen2 = 1; fen2 < 50; fen2++) 试试
下面有 fen55+fen22+fen1==150&&fen5 + fen2 + fen1 == 100 这个控制了,感觉保持一致会不太容易错
会不会是考虑n=0的情况,不知道它会不会把0也算作正整数
if(i<n)放在while循环的第一层