当前位置: 代码迷 >> 综合 >> OpenJudge 8462 一本通 1301 大盗阿福
  详细解决方案

OpenJudge 8462 一本通 1301 大盗阿福

热度:78   发布时间:2023-12-06 08:23:46.0

题目:大盗阿福


思路:

dp。

f[i]表示最后一个店抢劫的是i时的最大收益。

转移方程:f[i]=max(f[i-2],f[i-3])+a[i]


代码:

#include<bits/stdc++.h>
using namespace std;#define maxn 100000
#define maxm 1000
#define inf (1<<30)int n;
int a[maxn+5];
int f[maxn+5]={0};int dp(){f[1]=a[1],f[2]=a[2];for(int i=3;i<=n;i++){f[i]=max(f[i-2],f[i-3])+a[i];}return max(f[n-1],f[n]);
}int main() {int T;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}int ans=dp();printf("%d\n",ans);}return 0;
}