有10^6的数额,用100,50,10,5,2,1的面额可以有多少种组合方法?每种面额的张数不限(可以不用)。
先看个简单点的情况:10块钱可以有5,2,1的几种组合办法?相信很多朋友高中都做过这种题,方法就是穷举法,先从5块最多两张开始,变一张,2块的最多两张,此时1块得只能用1张。。。。。。
写成程序是:
int f(int all)
{
int i=0,j=0,m=0,count=0;
for (i=all/5;i>=0;i--)
{
for (j=(all-i*5)/2;j>=0;j--)
{
count++;
}
}
return count;
}
有两个地方需要注意:第一,两个循环的边界条件。第二是只有两层循环,因为一旦5块和2块得张数定了之后1块的张数也定了。
根据上面的程序,就很容易得出题目的答案了。