提交时间:2023-12-17 11:26:01

运行 ID: 116530

#include<iostream> using namespace std; long long n; long long num1[1001],num2[1001],dp1[1001],dp2[1001]; long long ans1(){ //偷第1个房子 dp1[1]=num1[1]; for(long long i=2;i<n;i++){ dp1[i]=max(dp1[i-1],dp1[i-2]+num1[i]); } return dp1[n-1]; } long long ans2(){ //不偷第1个房子 dp2[1]=0; for(long long i=2;i<=n;i++){ dp2[i]=max(dp2[i-1],dp2[i-2]+num2[i]); } return dp2[n]; } int main(){ cin>>n; for(long long i=1;i<=n;i++){ cin>>num1[i]; num2[i]=num1[i]; } cout<<max(ans1(),ans2())<<endl; return 0; }