1. 程式人生 > >汽車加油問題+貪心策略

汽車加油問題+貪心策略

問題描述:

一輛汽車加滿油後可行駛n公里。旅途中有K個加油站。設計一個有效演算法,在哪些加油站停靠加油,使沿途加油次數最少。

輸入的第1行有2個整數n  k,表示汽車加滿油可行駛 n km,圖中有k 個加油站。第二行有k+1個整數,表示第k個加油站與第k-1個加油站的距離。第0個為出發地,汽車已加滿油。第k+1個為目的地。  若無法到達,輸出”No Solution”.

例如: 輸入: 7  7                輸出: 4

              1 2 3 4 5 1 6 6

3 .    實驗要求

對於給定的n(n <= 5000)和k(k <= 1000)個加油站位置,程式設計計算最少加油次數。

分析:貪心演算法,汽車每次加滿油;汽車每到yi'g一個加油站判斷剩下的油能否到達下一站,若可以,則不加油繼續走,若不可以,則加滿油;

比較簡單,直接上程式碼了:

#include<stdio.h> int main() {     int n,k,sum=0,m=0;     scanf("%d%d",&n,&k);     int juli[k+1];     for(int i=0;i<=k;i++)     scanf("%d",&juli[i]);     for(int i=0;i<k;i++)     {         if(n>sum+juli[i+1])         sum+=juli[i];         else         {             m++;             printf("%d   ",i);             sum=juli[i];         }     }     printf("\n%d",m);     return 0;  }