一道程序题目 循环次数越少越好
要将五张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; }