汽車加油問題+貪心策略
問題描述:
一輛汽車加滿油後可行駛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; }