Description:
Jeremy 放假的时候去了一趟HK,他惊喜的发现由于通货膨胀严重,HK竟然有1元,2元,甚至5元的硬币。Jeremy想把身上携带的n元纸币全部换成硬币,请问他有多少种换成的方式呢(即不同类型的硬币数量有多少种组合方式)?
input:n ( 0 < n < 2016, 用EOF结束)
output: result (result 为组合方式数)
例如
input:
1
2
5
100
output:
1
2
4
541
(注意每次输出结果后均换行)
正确思路:
通过双重循环,如果5元硬币的总钱数加2元硬币的总钱数之和小于n,就认为有一次count!
错误思路:
认为没减少一个5元硬币就会多某特定的count!(错!)
#include <stdio.h>
int main(void) {
int n;
while (EOF != scanf("%d", &n)) {
int count = 0;;
int max5 = n / 5;
for (int i = 0; i <= max5; i++) {
int max2 = (n - i * 5) / 2;
for (int j = 0; j <= max2; j++) {
if (i * 5 + j * 2 <= n) {
count++;
}
}
}
printf("%d\n", count);
}
return 0;
}