zoukankan      html  css  js  c++  java
  • 贪婪算法的特点

    ①不能保证最后的解释最优的
    ②不能用来求最大或最小解问题
    ③只能求满足某些约束条件的可行解的范围
    【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;
    }
    

    }

  • 相关阅读:
    Java http方式提交短信到短信网关
    表单提交set集合问题
    java 追加文件
    readonly和const 二者的区别
    自定义控件的实现
    sql 分页常见做法
    数据库通用连接类
    log4Net 使用
    NHibernate从入门到精通——第一个NHibernate应用程序
    自己写了一个js,但是最终不能控制住最后后的提交,前面的还是比较完美,大家看到后,能帮我解决一下吗?
  • 原文地址:https://www.cnblogs.com/kongk/p/8642705.html
Copyright © 2011-2022 走看看