Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
116528 | 吴悠 | 打家劫舍II | C++ | 解答错误 | 75 | 0 MS | 256 KB | 512 | 2023-12-17 11:16:21 |
#include<iostream> using namespace std; int n; int num1[1001],num2[1001],dp1[1001],dp2[1001]; int ans1(){ //偷第1个房子 dp1[1]=num1[1]; for(int i=2;i<n;i++){ dp1[i]=max(dp1[i-1],dp1[i-2]+num1[i]); } return dp1[n]; } int ans2(){ //不偷第1个房子 dp2[1]=0; for(int i=2;i<=n;i++){ dp2[i]=max(dp2[i-1],dp2[i-2]+num2[i]); } return dp2[n]; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>num1[i]; num2[i]=num1[i]; } cout<<max(ans1(),ans2())<<endl; return 0; }