贪心算法——找纸币问题
问题主题:找钱
问题描述:
假设有1元、2元、5元、10元、20元、50元、100的纸币分别为c0, c1, c2, c3, c4, c5, c6,张。现在要用这些钱来支付K元,至少要用多少张纸币?如果能找,则输出纸币的张数,不能找则输出No
限制条件:
0<=c0, c1,c2,c3,c4,c5,c6<=109
0<=K<=109
样例:
输入
C0=3, c1=0, c2=2, c3=1, c4=0, c5=3, c6=5
输出
6
【解法一】
解题分析:
本题使用贪心算法,只需要考虑“尽可能多地使用面值大的纸币”,然后根据面值的大小从大到小排序依次选择。
程序实现:
C++
#include"iostream"
usingnamespacestd;
constintN = 7;
staticintK = 6200;
intmin(intnum1,intnum2);
intmomeyCount[N] = {3, 0, 2, 1, 0, 3, 5};
intvalue[N] = {1, 2, 5, 10, 20, 50, 100};
intgiveChange() {
intnum = 0;
for(inti = N-1; i >= 0; i