C++ 中最佳觀光對


假設我們有一個正整數陣列 A,其中 A[i] 表示第 i 個觀光點的價值,並且兩個觀光點 i 和 j 的距離為 j - i。現在,觀光景點對 (i

為了解決這個問題,我們將遵循以下步驟 −

  • 設定 ret := 0,maxVal := 0,將 n 設定為 A 的大小

  • 對於 0 到 n – 1 範圍內的 i

    • ret := ret 和 (maxVal + A[i] - i) 中的最大值

    • maxVal := (A[i] + i) 和 maxVal 中的最大值

  • 返回 ret

讓我們看看以下實現以獲得更好的理解 −

示例

線上演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int maxScoreSightseeingPair(vector<int>& A) {
      int ret = 0;
      int maxVal = 0;
      int n = A.size();
      for(int i = 0; i < n; i++){
         ret = max(ret, maxVal + A[i] - i);
         maxVal = max(A[i] + i, maxVal);
      }
      return ret;
   }
};
main(){
   vector<int> v1 = {8, 1, 5, 2, 6};
   Solution ob;
   cout << (ob.maxScoreSightseeingPair(v1));
}

輸入

[8,1,5,2,6]

輸出

11

更新於:2020 年 4 月 30 日

183 次瀏覽

開啟您的 職業生涯

完成課程以獲得認證

立即開始
廣告
© . All rights reserved.