• 贪婪算法的特点


    ①不能保证最后的解释最优的
    ②不能用来求最大或最小解问题
    ③只能求满足某些约束条件的可行解的范围
    【ACM小白成长撸】--贪婪法解硬币找零问题

    question:假设有一种货币,它有面值为1分、2分、5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱。按照贪婪法的思想,需要不断地使用面值最大的硬币。如果找零的值小于最大的硬币值,则尝试第二大的硬币,依次类推。
    /*程序的版权和版本声明部分:
    **从《C++程序设计思想与方法》(作者:翁惠玉)P61转载
    */

    include

    using namespace std;

    define ONEFEN 1

    define TWOFEN 2

    define FIVEFEN 5

    define ONEJIAO 10

    int main(void)
    {
    int money;
    int onefen = 0, twofen = 0, fivefen = 0, onejiao = 0;

    cout << "输入要找零的钱(以分为单位):";
    cin >> money;
    
    //不断尝试每一种硬币
    while(money >= ONEJIAO)
    {
        onejiao++;
        money = money - ONEJIAO;
    }
    while(money >= FIVEFEN)
    {
        fivefen++;
        money = money - FIVEFEN;
    }
    while(money >= TWOFEN)
    {
        twofen++;
        money = money - TWOFEN;
    }
    while(money >= ONEFEN)
    {
        onefen++;
        money = money - ONEFEN;
    }
    
    cout << "1角硬币数:" << onejiao << endl;
    cout << "5分硬币数:" << fivefen << endl;
    cout << "2分硬币数:" << twofen << endl;
    cout << "1分硬币数:" << onefen << endl;
    
    return 0;
    

    }
    贪婪法找零

    include

    using namespace std;
    int denomination[7]={100,50,20,10,5,2,1};

    int giveChange(int money,int (*result)[2])
    {

    int k=0;
    int sum=0;
    for(int i=0;i<7;i++)
    {
        if(money==0) break;
        if(money/denomination[i] > 0)
        {
            sum+=money/denomination[i] * denomination[i];
            result[k][0]=denomination[i];
            result[k][1]=money/denomination[i];
            money=money-sum;
            k++;
            
        }
     
    }
    return k;
    

    }

    int main()
    {
    int n; //钱总数

    while(cin>>n)
    {
     
        int result[100][2];
        int k=giveChange(n,result);
        cout<<"需要"<<k<<"张"<<endl;
        for(int i=0;i<k;i++)
        {
            cout<<result[i][0]<<"面币"<<result[i][1]<<"张"<<endl;
        }
        cout<<endl;
    }
    

    }

  • 相关阅读:
    AutoCAD.NET 二次开发(一) 自定义菜单及自动加载
    WSS 3.0部署备忘 一
    WSS 3.0部署备忘 四
    WSS 3.0部署备忘 三
    WSS 3.0部署备忘 二
    loj_1042
    loj_1045
    vim的学习笔记(3)
    Linux的磁盘与文件管理系统(1)
    文件与文件系统的压缩与打包
  • 原文地址:https://www.cnblogs.com/kongk/p/8642705.html
Copyright © 2020-2023  润新知