我是靠谱客的博主 简单苗条,最近开发中收集的这篇文章主要介绍问题 G: 找零钱,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题 G: 找零钱

时间限制: 1 Sec  内存限制: 128 MB
提交: 277  解决: 189
[提交][状态][讨论版][命题人:外部导入]

题目描述

小智去超市买东西,买了不超过一百块的东西。收银员想尽量用少的纸币来找钱。
纸币面额分为50 20 10 5 1 五种。请在知道要找多少钱n给小明的情况下,输出纸币数量最少的方案。 1<=n<=99;

输入

有多组数据  1<=n<=99;

输出

对于每种数量不为0的纸币,输出他们的面值*数量,再加起来输出

样例输入

25
32

样例输出

20*1+5*1
20*1+10*1+1*2

这一题的贪心思想就是比哪个面额大,就一直输出哪个面额,从50比到1

输出的时候我的办法是,输出某一个数字时,比如说输出50,就看后面的20 10 5 1 是否数有输出,如果有,就输出一个+号,后面的也同样用这个思想,输出+号

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int C;
while(scanf("%d",&C)!=EOF){
int count_50=0,count_20=0,count_10=0,count_5=0,count_1=0;
while(C){
if(C>=50){
C=C-50;
count_50++;
}
else if(C>=20){
C=C-20;
count_20++;
}
else if(C>=10){
C=C-10;
count_10++;
}
else if(C>=5){
C=C-5;
count_5++;
}
else if(C>=1){
count_1=C;
C=0;
}
}
if(count_50){
printf("50*%d",count_50);
if(count_20||count_10||count_5||count_1){
printf("+");
}
}
if(count_20){
printf("20*%d",count_20);
if(count_10||count_5||count_1){
printf("+");
}
}
if(count_10){
printf("10*%d",count_10);
if(count_5||count_1){
printf("+");
}
}
if(count_5){
printf("5*%d",count_5);
if(count_1){
printf("+");
}
}
if(count_1){
printf("1*%d",count_1);
}
printf("n");
}
return 0;
}

 

最后

以上就是简单苗条为你收集整理的问题 G: 找零钱的全部内容,希望文章能够帮你解决问题 G: 找零钱所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部