提交时间:2023-12-16 10:02:38

运行 ID: 116284

#include<bits/stdc++.h> using namespace std; int max(int x,int y) { if (x>y) return x; if (x<=y) return y; } int main() { int a; cin>>a; int byd[a+1],dp1[a+1],dp2[a+1]; for (int i=1;i<=a;i++) { cin>>byd[i]; dp1[i]=0; dp2[i]=0; } if (a>=3) { dp1[0]=0;dp2[0]=0; dp1[1]=byd[1]; //取尾 for (int i=2;i<=a-1;i++) { dp1[i]=max(dp1[i-1],(byd[i]+dp1[i-2])); } //取头 dp2[a]=byd[a]; dp2[a-1]=max(dp2[a],byd[a-1]); for (int i=a-2;i>=2;i--) { dp2[i]=max(dp2[i+1],(byd[i]+dp2[i+2])); } cout<<max(dp1[a-1],dp2[2]); } if (a==2) cout<<max(byd[1],byd[2]); if (a==1) cout<<byd[1]; return 0; }