整币兑换问题

hdu 2021 发工资咯 - 2014年 - 博客园=========================rwkj  1412
http://www.cnblogs.com/wc12436109/p/3871975.html

 

 

 

 

 

 

 

rwkj  1410 

 

算法分析与设计:贪心(找钱问题)

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交: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\n",x);
for(n=0;x>=50;n++)x=x-50;
if(n>0)printf("50 yuan:%d\n",n);
for(n=0;x>=20;n++)x=x-20;
if(n>0)printf("20 yuan:%d\n",n);
for(n=0;x>=5;n++)x=x-5;
if(n>0)printf("5 yuan:%d\n",n);    
if(x>0)printf("1 yuan:%d\n",x);        
}
return 0;
} 
View Code

#include <stdio.h>
int main( )
{
int n,x;
while(scanf("%d",&x)!=EOF)
{
printf("change:%d\n",x);
for(n=0;x>=50;n++)x=x-50;
if(n>0)printf("50 yuan:%d\n",n);
for(n=0;x>=20;n++)x=x-20;
if(n>0)printf("20 yuan:%d\n",n);
for(n=0;x>=5;n++)x=x-5;
if(n>0)printf("5 yuan:%d\n",n);
if(x>0)printf("1 yuan:%d\n",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\n",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\n",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\n",m) ;

}

 

 

 

 

 

 

 

 

posted @ 2014-08-09 17:39  2014acm  阅读(184)  评论(0编辑  收藏  举报