贪心算法之找零钱

贪心算法是一种在每一步选择中都采取在当前状态下最优的选择,从而希望能够得到全局最优解的算法策略。下面是一个经典的贪心算法实例:找零钱问题

找零钱问题

假设你是一个收银员,需要找零给客户。你有以下面额的硬币:1元、5元、10元、25元。现在需要找零 n 元钱,问如何用最少的硬币数量找零?

cpp 复制代码
#include <iostream>
#include <vector>

std::vector<int> makeChange(int amount) {
    std::vector<int> coins = {25, 10, 5, 1};  // 硬币面额
    std::vector<int> result;  // 存储找零的硬币

    for (int coin : coins) {
        while (amount >= coin) {
            result.push_back(coin);
            amount -= coin;
        }
    }

    return result;
}

int main() {
    int amount = 63;
    std::vector<int> change = makeChange(amount);

    std::cout << "Change for " << amount << " cents: ";
    for (int coin : change) {
        std::cout << coin << " ";
    }
    std::cout << std::endl;

    return 0;
}
逐行解释:
  1. makeChange 函数:这个函数接受一个整数 amount 作为参数,代表需要找零的金额。在函数内部,我们定义了一个硬币面额的向量 coins,然后通过贪心算法,从面额最大的硬币开始尽可能多地找零,直到找完为止。

  2. main 函数:在主函数中,我们设定了需要找零的金额为63,然后调用 makeChange 函数计算找零的硬币。最后,输出找零的结果。

这个例子中,贪心算法的思路是每次选择面额最大的硬币,以尽可能减少硬币的数量。在这个问题中,贪心算法的选择是合理的,因为硬币的面额是整除关系,可以保证每次选择的硬币都是最优解。然而,并非所有问题都适合贪心算法,因为它不一定能得到全局最优解。

相关推荐
愣头不青2 分钟前
238.除了自身以外数组的乘积
数据结构·算法
人工智能AI酱28 分钟前
【AI深究】逻辑回归(Logistic Regression)全网最详细全流程详解与案例(附大量Python代码演示)| 数学原理、案例流程、代码演示及结果解读 | 决策边界、正则化、优缺点及工程建议
人工智能·python·算法·机器学习·ai·逻辑回归·正则化
WangLanguager30 分钟前
逻辑回归(Logistic Regression)的详细介绍及Python代码示例
python·算法·逻辑回归
m0_5180194832 分钟前
C++与机器学习框架
开发语言·c++·算法
一段佳话^cyx37 分钟前
详解逻辑回归(Logistic Regression):原理、推导、实现与实战
大数据·算法·机器学习·逻辑回归
qq_4176950539 分钟前
C++中的代理模式高级应用
开发语言·c++·算法
xiaoye-duck1 小时前
《算法题讲解指南:动态规划算法--路径问题》--5.不同路径,6.不同路径II
c++·算法·动态规划
ambition202421 小时前
最大子数组和算法全解析:从暴力枚举到动态规划优化
数据结构·c++·算法
没头脑的男大2 小时前
关于删除列表的那些事儿
算法
Book思议-2 小时前
【数据结构实战】线性表的应用
c语言·数据结构·算法·链表