妈妈交给小明一张百元的钞票,让小明去超市购买一件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);
}
加油,为了更美好的人生努力吧!遇到挫折不要放弃,有一句话说的好,倘若连试都不试就想放弃,或许就失去了一个成功的机会!