贪心算法:汽车加油问题

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;
}

原文地址:https://www.cnblogs.com/plumlee/p/11515494.html

时间: 2024-08-30 05:35:15

贪心算法:汽车加油问题的相关文章

贪心算法--汽车加油问题

基本要素: 贪心选择:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 最优子结构:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质. 过程: 建立数学模型来描述问题: 把求解的问题分成若干个子问题: 对每一子问题求解,得到子问题的局部最优解: 把子问题的解局部最优解合成原来解问题的一个解. 汽车加油问题 一辆汽车加满油后可行驶 n公里.旅途中有若干个加油站.设计一个有效算法,指出应 在哪些加油站停靠加油

贪心算法求解汽车加油问题

试用贪心算法求解汽车加油问题: 已知一辆汽车加满油后可行驶n公里,而旅途中有若干个加油站.试设计一个有效算法,指出应在哪些加油站停靠加油,使加油次数最少,请写出该算法: 1 int greedy(vecter<int>x,int n)//定义一个int类型的向量x 2 { 3 int sum=0,k=x.size();//求k为x的长度 4 for(int j=0;j<k;j++) 5 { 6 if(x[j]>n) //加一次油最多行驶n公里,超过的话油不够使,车停在半路上了. 7

hdu 4040 (贪心算法)

这题是我们学校比赛的题目,因为当时参加精英组比赛,除了3个大二的其他都是大三大四的大神,就抱着打酱油的心态去了,结果真的打酱油了; 事后看看题目,确实有些题目以当前水平是可以做出来的,原因应该是 心态 以及 时间分配上的问题. 这题一直卡在题目什么意思上,还有一题 求前K大数的,那题最后想到用堆,但是不会写- -,忘了优先队列这个东西.所以很遗憾啊.. 总而言之就是会的东西太少了哈...还需要好好加油; 这题的意思就是说每个细胞每秒只能产生一个噬菌体,无论这个细胞里面有多少噬菌体,然后攒齐一定数

【线性规划与网络流24题】汽车加油行驶问题 分层图

汽车加油行驶问题 Time Limit: 1 Sec  Memory Limit: 128 MB Description 给定一个 N*N的方形网格,设其左上角为起点◎,坐标为( 1,1),X轴向右为正, Y轴向下为正,每一个方格边长为 1,如图所看到的.一辆汽车从起点◎出发驶向右下角终点▲,其坐标为( N,N).在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油.汽车在行驶过程中应遵守例如以下规则: (1)汽车仅仅能沿网格边行驶,装满油后能行驶 K条网格边.出发时汽车已装满油,在起点与终

1033. To Fill or Not to Fill (25) -贪心算法

题目如下: With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You are

POJ1017 Packets(贪心算法训练)

Time Limit: 1000MS          Memory Limit: 10000K          Total Submissions: 51306          Accepted: 17391 Description A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These pro

贪心算法的简述与示例

贪心算法采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯.能够用贪心算法求解的问题一般具有两个重要特性:贪心选择性质和最优子结构性质. 参考:http://babybandf.blog.163.com/blog/static/61993532010112923767/ [例1]删数问题[B][/B] 试题描

算法导论——lec 13 贪心算法与图上算法

之前我们介绍了用动态规划的方法来解决一些最优化的问题.但对于有些最优化问题来说,用动态规划就是"高射炮打蚊子",采用一些更加简单有效的方法就可以解决.贪心算法就是其中之一.贪心算法是使所做的选择看起来是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解. 一. 活动选择问题 [问题]对几个互相竞争的活动进行调度:活动集合S = {a1, a2, ..., an},它们都要求以独占的方式使用某一公共资源(如教室),每个活动ai有一个开始时间si和结束时间fi ,且0 ≤ si &

五大常用算法之三贪心算法

贪心算法 贪心算法简介: 贪心算法是指:在每一步求解的步骤中,它要求"贪婪"的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解. 贪心算法每一步必须满足一下条件: 1.可行的:即它必须满足问题的约束. 2.局部最优:他是当前步骤中所有可行选择中最佳的局部选择. 3.不可取消:即选择一旦做出,在算法的后面步骤就不可改变了. 贪心算法案例: 1.活动选择问题  这是<算法导论>上的例子,也是一个非常经典的问题.有n个需要在同一天使用同一个教室的活动a