zoukankan      html  css  js  c++  java
  • 第四章作业

    1.你对贪心算法的理解(2分)

    定义:贪心算法是指在每一步求解的步骤中,它要求“贪婪”的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解。

    特征:

    (1)可行的:即它必须满足问题的约束。

    (2)局部最优:它是当前步骤中所有可行选择中最佳的局部选择。

    (3)不可取消:即选择一旦做出,在算法的后面步骤就不可改变了。

    补充:

    (1)贪心算法的每一步都有一组选择,总是作出在当前来看是最好的选择。

    (2)贪心算法并不从整体最优上来考虑,所作出的选择只是某种意义上的局部最优选择。

    (3)贪心算法并不能保证最终结果是最优的。

     

    2.请说明汽车加油问题的贪心选择性质(2分)

    #include<iostream>
    
    using namespace std;
    
    /*/题目:
    
    一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。
    
    设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。
    
    7 7
    
    1 2 3 4 5 1 6 6
    
    4
    
    /*/
    
    int main()
    
    {
    
        int i,j,a[1005];//i代表可行使i公里
    
        cin >> i >> j;
    
        for(int t=0;t<=j;t++) //输入j+1个数
    
        {
    
            cin >> a[t];
    
        }
    
        a[j+1]=0;
    
        int sum =0,count=0,flag=0;
    
        for(int t =0; t<=j;t++)
    
        {
    
            sum=sum+a[t];//若剩余油量可以到达下一个目的地,则不加油。
    
            if(i-sum<=a[t+1]&&i>=a[t])//若到剩余油量不够到达下一个加油站则加油 。
    
            {
    
                sum=0;
    
                count++;
    
            }
    
            if(i<a[t])//若其中有一个目的地的距离超过最大行使距离,做标记。
    
            flag=1;
    
        }
    
        if(flag==0)
    
        cout << count<<endl;
    
        if(flag==1)
    
        cout <<"No Solution!"<<endl;
    
        return 0;
    
    }

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

    (1)问题:第一次把题目做出来的时候总是段错误,后面把思路调整了一下,就避免了这一个错误了。

    (2)结对编程情况:和伙伴交流做题的思路可以让自己更理解问题,交流的过程中也会慢慢注意到自己之前忽略的问题。

  • 相关阅读:
    动态规划之 0-1背包问题及改进
    动态规划之矩阵连乘
    python3 入门 (四) 类与继承
    动态规划之最长公共子序列(LCS)
    java并发包分析之———AQS框架
    java并发包分析之———BlockingQueue
    java并发包分析之———Deque和LinkedBlockingDeque
    java并发包分析之———concurrentHashMap
    java并发包分析之———ConcurrentSkipListMap
    java并发包分析之———Atomic类型
  • 原文地址:https://www.cnblogs.com/icyk/p/10048641.html
Copyright © 2011-2022 走看看