最通俗易懂的找零钱的解决方法

妈妈交给小明一张百元的钞票,让小明去超市购买一件13元的商品,请问超市如何找零,才能使零钱的张数最少。

注意:只有面值为50、20、10、5和1元的钞票。

刚看到这一道题感觉上是很简单,但是为了加深印象,也为了帮助更多的人,我想把我的小思路写出来,首先现实确定要找多少钱的零钱,题中要找87块钱的零钱,但是想要得到的零钱最少,这个时候就需要用到动态规划算法了。先用87除以50得到的商就是找回50块钱的张数,接着再用87除以50然后求20的余数,所得到的结果就是要找20块钱的张数。下面依次是这样的思路,后面不在赘述。
我下面写的代码中有c语言,有c++,但是c++兼容c语言,一般有代码洁癖的人可能看着不太舒服,见谅了!
代码展示如下:

#include<stdio.h>
#include <iostream>
using namespace std;
int main() {
    int  a = 0, b = 0, c = 0, d = 0,e = 0;
    int money;
    int sum = 0;
    cout << "请输入要输出找的零钱数" << endl;
    cin >> money;
    e = money / 50;

    a = money /50 % 20;

    b = money % 50 % 20 / 10;

    c = money % 20 % 10 / 5;

    d = money % 20 % 10 % 5;

    sum = e + a + b + c + d;
   
    printf("$50 bills: %d\n", e);

    printf("$20 bills: %d\n", a);

    printf("$10 bills: %d\n", b);

    printf("$5 bills: %d\n", c);

    printf("$1 bills: %d\n", d);
    printf("一共有%d张零钱", sum);
}


加油,为了更美好的人生努力吧!遇到挫折不要放弃,有一句话说的好,倘若连试都不试就想放弃,或许就失去了一个成功的机会!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值