• 算法第四章作业


    1.你对贪心算法的理解

    答: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。

      贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。但贪心算法不是对所有问题都能得到整体最优解,要进行证明该贪心策略能满足条件,且对后面的不受影响。
      贪心算法的基本思路:
        1.把求解的问题分成若干个子问题。
           2.对每一子问题求解,得到子问题的局部最优解。
           3.把子问题的解局部最优解合成原来解问题的一个解。
     
    2.请选择一道作业题目说明你的算法满足贪心选择性质
    4-2 货币找零 (30分)
     

    人民币的面值有100、50、20、10、5、2、1元。请你输出找零纸币数最少的方案

    输入格式:

    两个整数,分别表示付款金额和消费金额

    输出格式:

    输入找零方案。包含若干行,每行包含两个数字,纸币面额和纸币数量

    输入样例:

    10 3
    
     

    输出样例:

    在这里给出相应的输出。例如:

    5 1
    2 1
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int a[7] = {1,2,5,10,20,50,100};
    int main()
    {
        
        int pay, money, i;
        cin >> pay >> money;
        int t = pay - money;
        for(i = 6; i >= 0; i--)
        {
            int c = t / a[i];
            t = t % a[i];
            if(c != 0)
                cout << a[i] << " " << c << endl; 
        }
        
        return 0;    
    }

    像在这里,拿10块钱,付3块钱,找7块钱,这个时候,最开始找了1张5块钱,还剩2块钱,进行了就变成这个问题,要找2块钱的纸币使得数量最小,满足贪心选择性质,分成若干小问题,都是在局部上寻找最优解

    3.请说明在本章学习过程中遇到的问题及结对编程的情况

    答:最大的问题莫过于理解题意了,理解题意真的好难,要把它往贪心算法上思考也好难,好不容易理解了又会有点刻板,一看到题,立马搬上结构体和cmp函数,总而言之,还是题做得太少了,不过贪心算法相比前两章学的还说要好理解一点。

      结对编程挺好的,感觉彼此都有在进步,我自己也能打出完整代码了,每次老师提问都是选择我来回答,我真害怕自己理解错误,或者是表述错误,影响进度,不过在同伴和老师的双重影响下,我对上机要回答的那些题影响会更深一点,几乎整段代码都理解背下来了,这可要好好感谢我的同伴还有老师。

  • 相关阅读:
    向代码致敬,寻找你的第83行
    佛系程序员的月薪五万指南
    再谈全局网HBase八大应用场景
    如何避免HBase写入过快引起的各种问题
    阿里云MaxCompute被Forrester评为全球云端数据仓库领导者
    为了让开发者写MaxCompute SQL更爽,DataWorks 增强SQL 编辑器功能
    《CDN 之我见》原理篇——CDN的由来与调度
    Installing GCC (C++ Compiler and Development Tools)
    Gems installation
    Fedora23
  • 原文地址:https://www.cnblogs.com/ldx539/p/13953107.html
Copyright © 2020-2023  润新知