📜  贪婪算法的C C++程序,用于查找最小数量的硬币(1)

📅  最后修改于: 2023-12-03 14:57:46.979000             🧑  作者: Mango

贪婪算法的C/C++程序,用于查找最小数量的硬币

贪婪算法是一种简单而常用的算法,用于在组合优化问题中找到可行解的过程中,每一步都选择当前状态下最好的选项。

在找零钱问题中,贪心算法的思路就是:每一次找到最大面值的硬币,直到凑够总金额。

程序说明

本程序使用贪心算法,根据面值从大到小选择硬币,直到凑够总金额。注意:这并不是最优解,但是时间复杂度是比较低的。

程序如下:

#include<iostream>
using namespace std;

int main()
{
    int n;//总金额
    cin>>n;
    int a[6]={50,20,10,5,2,1};//硬币面值
    int cnt=0;//硬币数量
    for(int i=0;i<6;i++) //循环6个面值的硬币
    {
        while(n>=a[i]) //如果总金额大于等于当前面值的硬币,就继续凑
        {
            cnt++; //硬币数量加1
            n-=a[i]; //总金额减去当前面值的硬币
        }
    }
    cout<<cnt;//输出最小数量的硬币
    return 0;
}
运行结果

假设总金额为72,程序输出的结果是5,即最小数量的硬币为5。

Markdown代码
# 贪婪算法的C/C++程序,用于查找最小数量的硬币

贪婪算法是一种简单而常用的算法,用于在组合优化问题中找到可行解的过程中,每一步都选择当前状态下最好的选项。

在找零钱问题中,贪心算法的思路就是:每一次找到最大面值的硬币,直到凑够总金额。

## 程序说明

本程序使用贪心算法,根据面值从大到小选择硬币,直到凑够总金额。注意:这并不是最优解,但是时间复杂度是比较低的。

程序如下:

```c++
#include<iostream>
using namespace std;

int main()
{
    int n;//总金额
    cin>>n;
    int a[6]={50,20,10,5,2,1};//硬币面值
    int cnt=0;//硬币数量
    for(int i=0;i<6;i++) //循环6个面值的硬币
    {
        while(n>=a[i]) //如果总金额大于等于当前面值的硬币,就继续凑
        {
            cnt++; //硬币数量加1
            n-=a[i]; //总金额减去当前面值的硬币
        }
    }
    cout<<cnt;//输出最小数量的硬币
    return 0;
}
运行结果

假设总金额为72,程序输出的结果是5,即最小数量的硬币为5。