整币兑换问题
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\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 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) ;
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 想让你多爱自己一些的开源计时器
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析