一开始真是会不了一点,看的评论区大佬解答方法,摘过来放这了
int maxScoreSightseeingPair(vector<int>& v) {
int n=v.size();
vector<int> dp(n+10); //dp[i]:以i为 景点对的后一个元素的 景点对最高分
dp[0]=-1;
dp[1]=v[0]+v[1]-1;
int ans=dp[1];
for(int i=2;i<n;i++){
dp[i]=max(v[i]+v[i-1]-1,dp[i-1]-v[i-1]+v[i]-1);
if(dp[i]>ans)
ans=dp[i];
}
return ans;
}