1. 程式人生 > >演算法第四章作業

演算法第四章作業

1.你對貪心演算法的理解

貪心演算法指通過一系列的選擇來得到問題的解,它所做的每一個選擇都是當前狀態下的區域性最好選擇,即(區域性最優解 > 全域性最優解)。一般來說,凡是經過數學歸納法證明可以採用貪心法的情況都應該採用,因為其具有高效性。同時,如果一個問題具有貪心選擇性質和最優子結構性質,那麼使用貪心法來對其求解總能求得最優解。

2.請說明汽車加油問題的貪心選擇性質

“最遠加油站優先”,即確保每次加油後汽車行駛的距離最長。

#程式碼

int greedy(vector<int>x, int n){
  int sum = 0,k=x.size();
  for
(int j=0;j<k;j++) if(x[j]>n){ cout<<"No Solution!"<<endl; return -1; } for(int i=0,s=0;i<k;i++){ s+=x[i]; if(s>n){sum++;s=x[j];} } return sum; }

 

3.請說明在本章學習過程中遇到的問題及結對程式設計的情況

因為這道題相對來說比較基礎,因此我和同伴結對時很快便確定了演算法。因為做的比較快,第一次提交時忽略了輸出“No Solution!”,這讓我吸取了教訓,不能因為題目不難就掉以輕心。