Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
116231 | I am BM | 打家劫舍II | C++ | 解答错误 | 50 | 0 MS | 248 KB | 536 | 2023-12-16 09:34:42 |
#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; } 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[2]; for (int i=3;i<=a;i++) { dp2[i]=max(dp2[i-2],(byd[i]+dp2[i-1])); } cout<<max(dp1[a-1],dp2[a]); return 0; }