分数
2026-02-05 14:19:04
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int arr[100000];
int n,ans;
int vis[2001][2001];
int mem[2001][2001];
int dfs(int l,int r,int x){
if(l>=r) return 0;
if(vis[l][r]) return mem[l][r];
int ans0=0;
if(arr[l]+arr[l+1]==x){
int ans1=dfs(l+2,r,x);
ans0=max(ans0,ans1+1);
}
if(arr[r]+arr[r-1]==x){
int ans2=dfs(l,r-2,x);
ans0=max(ans0,ans2+1);
}
if(arr[l]+arr[r]==x){
int ans3=dfs(l+1,r-1,x);
ans0=max(ans0,ans3+1);
}
vis[l][r]=1;
mem[l][r]=ans0;
return ans0;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;++i) cin>>arr[i];
ans=max(ans,dfs(1,n,arr[1]+arr[2]));
ans=max(ans,dfs(1,n,arr[1]+arr[n]));
ans=max(ans,dfs(1,n,arr[n]+arr[n-1]));
cout<<ans;
return 0;
}
这里空空如也











有帮助,赞一个