hdu 2021 发工资咯 - 2014年 - 博客园=========================rwkj 1412
http://www.cnblogs.com/wc12436109/p/3871975.html
rwkj 1410
算法分析与设计:贪心(找钱问题)
总提交:191 测试通过:55
描述
买火车票时经常会碰到找钱问题。售票员手中有50、20、10、5、1元的钱币,你知道怎么找钱才能使找回的零钱张数最少吗?
输入
多组测试数据,输入需要找钱的钱数
输出
对每组测试数据按下面格式输出:
第一行输出"change:",然后是你要找的钱
以下几行按面值从大到小输出要找的张数,格式如下:50 yuan: 1,如果1张也没有就不需要输出
样例输入
76
样例输出
change:76
50 yuan:1
20 yuan:1
5 yuan:1
1 yuan:1
#include <stdio.h> int main( ) { int n,x; while(scanf("%d",&x)!=EOF) { printf("change:%d ",x); for(n=0;x>=50;n++)x=x-50; if(n>0)printf("50 yuan:%d ",n); for(n=0;x>=20;n++)x=x-20; if(n>0)printf("20 yuan:%d ",n); for(n=0;x>=5;n++)x=x-5; if(n>0)printf("5 yuan:%d ",n); if(x>0)printf("1 yuan:%d ",x); } return 0; }
#include <stdio.h>
int main( )
{
int n,x;
while(scanf("%d",&x)!=EOF)
{
printf("change:%d
",x);
for(n=0;x>=50;n++)x=x-50;
if(n>0)printf("50 yuan:%d
",n);
for(n=0;x>=20;n++)x=x-20;
if(n>0)printf("20 yuan:%d
",n);
for(n=0;x>=5;n++)x=x-5;
if(n>0)printf("5 yuan:%d
",n);
if(x>0)printf("1 yuan:%d
",x);
}
return 0;
}
#include <stdio.h>
int main( )
{
int p1,p2,p5,p10,p20,p50,n,m ;
n=100 ;
m=0;
for(p1=0; p1<=n; p1++)
for(p2=0; p2<=n/2; p2++)
for(p5=0; p5<=n/5; p5++)
for(p10=0; p10<=n/10; p10++)
for(p20=0; p20<=n/20; p20++)
for(p50=0; p50<=n/50; p50++)
if( p1+2*p2+5*p5+10*p10+20*p20+50*p50==n ) m++ ;
printf("%d
",m) ;
}
************************************************************
************************************************************************
#include <stdio.h>
int main( )
{
int p1,p2,p5,p10,p20,p50,n,m ;
n=100 ;
m=0;
for(p2=0; p2<=n/2; p2++)
for(p5=0; p5<=n/5; p5++)
for(p10=0; p10<=n/10; p10++)
for(p20=0; p20<=n/20; p20++)
for(p50=0; p50<=n/50; p50++)
{
p1=n-(2*p2+5*p5+10*p10+20*p20+50*p50) ;
if(p1>=0) m++ ;
}
printf("%d
",m) ;
}
**********************************************
************************************************************
#include <stdio.h>
int main( )
{ int p1,p2,p5,p10,p20,p50,n,m ;
n=100 ; m=0 ;
for(p2=0; p2<=n/2; p2++ )
for(p5=0; p5<=(n-2*p2)/5; p5++ )
for(p10=0; p10<=(n-2*p2-5*p5)/10 ; p10++ )
for(p20=0 ;p20<=(n-2*p2-5*p5-10*p10)/20 ; p20++)
for(p50=0 ; p50<=(n-2*p2-5*p5-10*p10-20*p20)/50; p50++)
{
p1=n-(2*p2+5*p5+10*p10+20*p20+50*p50) ;
if(p1>=0) m++ ;
}
printf("%d
",m) ;
}