贪心算法:汽车加油问题

假装没事ソ 提交于 2019-11-29 10:29:13
1.试用贪心算法求解汽车加油问题:已知一辆汽车加满油后可行驶n公里,而旅途中有若干个加油站。试设计一个有效算法,指出应在哪些加油站停靠加油,使加油次数最少请写出该算法。
#include <iostream>
#include <algorithm>
#define M 100
using namespace std;
/*加满油之后可行驶n公里,
对于给定的n和k个加油站位置,计算最少加油次数。
基本思路:经过加油站时如果汽车有油,且能到达下一个加油站,
就不加油,否则,加油
设定数组来记录经过加油站时是否加油*/
int main()
{
    int station[M];//记录加油站之间的路程
    int n;//汽车加满油后能行驶的里程
    int k1;//加油站个数
    int k[M];//记录是否加油
    int lv;//油箱中的油可以走的距离
    cout<<"输入加油站的数量:";
    cin>>k1;

    cout<<"输入各个加油站之间的距离:";
    for(int i=0;i<k1+1;i++)//共k+1段距离
    {
        cin>>station[i];
    }
    cout<<"输入加满油后可以走的距离";
    cin>>n;
    lv=n;
    for(int i=0;i<k1;i++)
    {
       if(lv-station[i]<=station[i+1])
       {
           k[i]=1;
           lv=n;
       }
       else
       {
           k[i]=0;
       }
    }
    cout<<"需要在第:";
    for(int i=0;i<k1;i++)
    {
        //cout<<k[i]<<" ";
        if(k[i]==1)
        {
            cout<<i+1<<" ";
        }
    }
    cout<<"站加油";

   // cout << "Hello world!" << endl;
    return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!