一道程序题目 循环次数越少越好
要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,要求换成30张小钞票,每种面值的至少一张,编程输出所有可能的换法,程序应适当考虑减少重复次数。有高手 指点下吗? 循环次数 少于3000次~
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j , k, c = 0;
for (i = 0; i < 10; i++)
for (j = 0; j < 25; j++)
for (k = 0; k < 50; k++)
{
int l = 500 - 50 * i - 20 * j - 10 * k;
if (l >= 0 && l % 5 == 0)
{
l /= 5;
if (i + j + k + l == 30)
{
printf("%d %d %d %d\n", i, j, k, l);
c++;
}
}
}
printf("count:%d\n", c);
return 0;
}