7-5 汽车加油问题 (20 分)(思路+详解)Come 宝!!!!!!!!!!!!!
一:題目
題目來源:王曉東《算法設(shè)計(jì)與分析》
一輛汽車加滿油后可行駛 n公里。旅途中有若干個(gè)加油站。設(shè)計(jì)一個(gè)有效算法,指出應(yīng) 在哪些加油站??考佑?#xff0c;使沿途加油次數(shù)最少。
輸入格式:
 第一行有 2 個(gè)正整數(shù)n和 k(k<=1000 ),表示汽車加滿油后可行駛n公里,且旅途中有 k個(gè)加油站。 第二行有 k+1 個(gè)整數(shù),表示第 k 個(gè)加油站與第k-1 個(gè)加油站之間的距離。 第 0 個(gè)加油站表示出發(fā)地,汽車已加滿油。 第 k+1 個(gè)加油站表示目的地。
輸出格式:
 輸出最少加油次數(shù)。如果無法到達(dá)目的地,則輸出“No Solution!”。
輸入樣例:
7 7 1 2 3 4 5 1 6 6輸出樣例:
4二:思路
思路:1.將這段路程的最大值跟 n進(jìn)行比較 如果比其大就直接輸出 No Solution!
 2.否則的話就是每段路程在加滿油的情況下均能過去
 3.如果可以過去,那么當(dāng)路程m小于n時(shí),對n進(jìn)行更新 n = n-m;然后在進(jìn)行判斷下一段路程
 跟n的關(guān)系,如果m大于n那么就加油,同時(shí)進(jìn)行計(jì)數(shù)
三:上碼
/**思路:1.將這段路程的最大值跟 n進(jìn)行比較 如果比其大就直接輸出 No Solution! 2.否則的話就是每段路程在加滿油的情況下均能過去3.如果可以過去,那么當(dāng)路程m小于n時(shí),對n進(jìn)行更新 n = n-m;然后在進(jìn)行判斷下一段路程跟n的關(guān)系,如果m大于n那么就加油,同時(shí)進(jìn)行計(jì)數(shù) */ #include<bits/stdc++.h> using namespace std;int n,k; int res(vector<int>& v,int val){int maxx = 0,cnt = 0;for(int i = 0; i < v.size(); i++){maxx = max(maxx,v[i]);}if(maxx > n){return -1;}for(int i = 0; i < v.size(); i++){if(n >= v[i]){n = n - v[i];}else{n = val;n = n - v[i];cnt++;//cout << n << ' ';} // cout << v[i] << ' ';}return cnt;}int main(){vector<int>v;cin >> n >> k;for(int i = 0; i < k+1; i++){int num;cin >> num;v.push_back(num);}int temp = res(v,n);if(temp == -1){cout << "No Solution!";}else{// cout << endl;cout << temp;}}
 又得嘮叨一句 記得加油 寶!!!!!!!!!!!!!!!!
總結(jié)
以上是生活随笔為你收集整理的7-5 汽车加油问题 (20 分)(思路+详解)Come 宝!!!!!!!!!!!!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 足疗多久做一次,长期足疗的坏处
- 下一篇: 7-1 活动选择问题 (25 分)(思路
