码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-11-08 17:52:28      阅读:33      评论:0      收藏:0      [点我收藏+]

标签:bre   item   ==   while   数据   col   end   style   表示   

 

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

一辆汽车加满油后可行驶 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分)

标签:bre   item   ==   while   数据   col   end   style   表示   

原文地址:https://www.cnblogs.com/lvjingyuan/p/13943991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!