微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

贪婪算法解决方案给汽车加油带来的问题是输出错误

如何解决贪婪算法解决方案给汽车加油带来的问题是输出错误

我正在Coursera上解决一个名为Car Fueling的问题,并且遵循给出的伪代码。问题指出:

您将前往距您的家乡d英里的另一座城市。您的汽车在满载油箱的情况下最多可以行驶m英里,然后从满载油箱开始。
一路上,加油站的距离分别为1号,2号,。 。 。 ,从您的家乡停下n。最少需要补充多少笔?

输入格式。
第一行包含一个整数d
第二行包含一个整数m
第三行指定整数n
最后,最后一行包含整数1、2,...。 。 。 ,停止n

输出格式。
假设城市之间的距离为d英里,一辆满满油箱的汽车最多可以行驶m英里,并且加油站的距离为1、2,...,1。 。 。 ,一路停止n输出所需的最小笔芯数量。假设汽车以满载的油箱开始。如果无法到达目的地,则输出−1

以下是解决问题的功能

int compute_min_refills(int dist,int tank,vector<int> & stops) {
    int curref=0;//current position of the car
    int numref=0;//number of refills
    int lastref=0;//last position of the car
    int n=stops.size();//the amount of stops to refill at
    while(curref<=n){
        if(curref>=n){return -1;}
        lastref=curref;
        while((curref<=n) && (stops[curref+1]-stops[lastref]<=tank)){curref=curref+1;}

        if(curref==lastref){return -1;}

        if(curref<=n){numref=numref+1;}
    }       
    return numref;
}

我提交时,它在第一个测试用例上失败了,但是我不知道是什么原因导致它出错。

测试案例:

Input:
500
200
4
100 200 300 400

Your output:
1

Correct output:
2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。