Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
116530 | 吴悠 | 打家劫舍II | C++ | 通过 | 100 | 0 MS | 268 KB | 556 | 2023-12-17 11:26:01 |
#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; }