C语言 ,找零钱的问题。
题目是:描述我们知道人民币有1、2、5、10、20、50、100这几种面值。
现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。
比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。
输入
输入有多组,每组一行,为一个整合n。
输入以0结束。
#include<stdio.h>
int main()
{
int n,a,b,c,d,e,f,g,s=0;
while(1)
{
scanf("%d",&n);
if(n==0)break;
for(a=0;a<=n/100;a++)
for(b=0;b<=n/50;b++)
for(c=0;c<=n/20;c++)
for(d=0;d<=n/10;d++)
for(e=0;e<=n/5;e++)
for(f=0;f<=n/2;f++)
for(g=0;g<=n;g++)
{
if(n==a*100+b*50+c*20+d*10+e*5+f*2+g)
s++;
}
printf("%d\n",s);
s=0;
}
return 0;
}
我这样叫上去显示超时的。 谁有更好的方法吗?