Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
116284 | I am BM | 打家劫舍II | C++ | 通过 | 100 | 0 MS | 240 KB | 670 | 2023-12-16 10:02:38 |
#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; }