7-1 汽车加油问题 (15分)

Posted lvjingyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7-1 汽车加油问题 (15分)相关的知识,希望对你有一定的参考价值。

 

题目来源:王晓东《算法设计与分析》

一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。

输入格式:

第一行有 2 个正整数n和 k(k<=1000 ),表示汽车加满油后可行驶n公里,且旅途中有 k个加油站。 第二行有 k+1 个整数,表示第 k 个加油站与第k-1 个加油站之间的距离。 第 0 个加油站表示出发地,汽车已加满油。 第 k+1 个加油站表示目的地。

输出格式:

输出最少加油次数。如果无法到达目的地,则输出“No Solution!”。

输入样例:

7 7
1 2 3 4 5 1 6 6  

输出样例:

4

代码:

#include <iostream>
using namespace std;
int main(){
    int n;  // 表示汽车加满油后可行驶n公里
    int k;  // 旅途中有 k个加油站,要走k+1段路
    int count=0;  // 加油次数 
    
    cin>>n;
    cin>>k;
    int s[k+4]={0};  // 虽然只有 k+1 个数据,但是要留多几个后面有用 
    for(int i=1;i<=k+1;i++){
        cin>>s[i];
    }
    
    for(int i=1;i<=k+1;i++){
        int len=s[i];
        //没有解 
        if(n<len){
            cout<<"No Solution!" <<endl;
            return 0;
        }
        //最后一段路不用加油 
        if(i==k+1) break;
        //一般情况 
        while(len<=n){
            len += s[++i];
            if(i==k+3) {  // 不用加油的情况 
                cout<<count<<endl;
                return 0;
            }
        }          
        i--;
        count++; 
    } 
    cout<<count<<endl; 
    return 0;
}

 

以上是关于7-1 汽车加油问题 (15分)的主要内容,如果未能解决你的问题,请参考以下文章

网络流24题----15汽车加油行驶问题

[CODEVS1912] 汽车加油行驶问题(分层图最短路)

网络流24题-汽车加油行驶问题

P4009 汽车加油行驶问题(spfa)

汽车加油问题出现一些错误。它适用于大多数测试用例,但不适用于所有测试用例。你能告诉我为啥这段代码是错误的

汽车加油问题