Giả sử chúng ta có một mảng A gồm các số nguyên dương, bây giờ A [i] đại diện cho giá trị của điểm tham quan thứ i và hai điểm tham quan thứ i và j có khoảng cách là j - i. Bây giờ điểm của một cặp (i
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
Đặt ret:=0, maxVal:=0, đặt n:=kích thước của A
cho tôi trong phạm vi từ 0 đến n - 1
ret:=max of ret và (maxVal + A [i] - i)
maxVal:=max of (A [i] + i) và maxVal
trả lại ret
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
#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));
}
Đầu vào
[8,1,5,2,6]
Đầu ra
11