#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int buyProduct(vector<int> a){
int n = a.size();
int *dp = new int[n];
dp[0] = a[0];
dp[1] = max(a[0],a[1]);
//暂时不考虑首尾相邻
for (int i = 2; i < n; i++){
if (a[i]>a[i - 1])
dp[i] = dp[i - 2] + a[i];
else
dp[i] = dp[i - 1];
}
int maxValue = 0;
if (a[0] < a[1]) //在第一家不购买商品
maxValue = dp[n-1];
else //在第一家购买商品
{
//if a[n-1]<a[n-2] return dp[n-2] 最后一家不购买
//else return dp[n-3]+a[n-1] 最后一家购买,一旦购买就必须要与第一家作比较,放弃两家中的一家
maxValue = max(dp[n - 2], dp[n - 3] + a[n - 1] - min(a[0],a[n-1]));
}
return maxValue;
}
//思路二:建立dp1,dp2分别计算排除第一家和最后一家的动态规划,return max(dp1[n-1],dp2[n-2])
int main(){
vector<int> a = {8,3,8,6,3,9,7,6,9};
int res = buyProduct(a);
cout << res << endl;
}