算法第四章作业

一、对贪心算法的理解

贪心算法并不从整体最优考虑,他做出的选择是局部情况下的最优选择,我们希望贪心算法得到的整体结果也是最优的,他不能对所有问题产生整体最优解,但是能对大部分问题产生整体最优解,就算不能得到整体最优解,结果跟最优解相差不大。当局部最优和全局最优解一致性被证明后可使用贪心算法。

 

二、汽车加油问题贪心算法

程序代码:

#include<iostream>
using namespace std;
int main()
{
    int n;
    int k;
    int i;
    int a[1000];
    int times=0;
    cin>>n>>k;
    int oil=n;
    for(i=0;i<k+1;i++)
    {
        cin>>a[k-i];
    }
    for(i=0;i<k+1;i++)
    {
        if(a[k-i]>n)
        {
            cout<<"No Solution!";
            return 0;
        }
    }
    for(i=0;i<k+1;i++)
    {
        if(a[i]<=oil)
        {
            oil=oil-a[i];
        }
        else
        {
            oil=n-a[i];
            times++;
        }
    }
    cout<<times<<endl;
    return 0;
}
 
主要思想:
从第一个加油站开始,如果两个加油站之间的距离大于车辆可以行驶的距离,输出“No Solution!”,往后推进,如果可以行驶到下一个加油站,加油次数不变,如果计算到不能行驶到下一个加油站,在本加油站加油,加油次数加一,直到到达终点。
 
三、结对编程感想
和小伙伴的合作很成功,我们共同解决了第一道问题,还有很多思想没有理解透彻,希望可以一起解决问题,共同合作提升自己的能力。
posted @ 2019-11-26 20:11  梁家铭  阅读(126)  评论(0)    收藏  举报