貪心算法:汽車加油問題


1.試用貪心算法求解汽車加油問題:已知一輛汽車加滿油后可行駛n公里,而旅途中有若干個加油站。試設計一個有效算法,指出應在哪些加油站停靠加油,使加油次數最少請寫出該算法。
(假設汽車出發時已經加滿油)

#include <iostream> #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-station[0]; for(int i=0;i<k1;i++) { if(lv<station[i+1])
       {
           k[i]=1;
           lv=n-station[i+1];
       }
       else
       {
           k[i]=0;
           lv=lv-station[i+1];
       } } 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; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM