题目描述:
我们知道人民币有1、2、5、10、20、50、100这几种面值。现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。
输入:输入有多组,每组一行,为一个整合n。输入以0结束。
输出:输出该面额有几种表示方法。
样例输入:
1
4
0
样例输出:
1
3
代码如下:
public class zhaoLingQian
{
static int money[]={1,2,5,10,20,50,100};
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
while (sc.hasNext())
{
int input=sc.nextInt();
if (input==0)
{
return;
}
int count=money.length;
int index=0;
for (int i = count-1; i >=0; i--)
{
if (input>=money[i])
{
index=i;
break;
}
}
System.out.println(ChangeMoney(input,index));
}
sc.close();
}
public static int ChangeMoney(int n,int index)
{
if (n==1||n==0||index==0)
{
return 1;
}
if (n<0||index<0)
{
return 0;
}
return ChangeMoney(n-money[index],index)+ChangeMoney(n,index-1);
}
}