将100换成1元,5元,10元的零钱有多少种换法?
怎么编这个程序将100换成1元,5元,10元的零钱有多少种换法?

#include<stdio.h> #define m_100 100 #define m_10 10 #define m_5 5 #define m_1 1 main() { int i,j,k,n=0; for(i=1;i<100;i++) for(j=1;j<20;j++) for(k=1;k<10;k++) if(i*m_1+j*m_5+k*m_10==m_100) n++; printf("%d\n",n); }
#include <stdio.h> int foo(int n, int cur) { if(n == 0) return 1; int arr[] = { 1, 5, 10 }; int count = 0; for(int i = cur; i < sizeof arr/sizeof *arr; ++i) { if(n >= arr[i]) { count += foo(n - arr[i], i); } } return count; } int main(int argc, char *argv[]) { printf("%d\n", foo(100, 0)); return 0; }计算结果是 121