解题思路:他只有两种情况,就是间隔一个或间隔两个再洗劫。因为如果间隔三个那不如把中间的那家也洗劫掉。
所以:
sum[k] = sum[k]+max(sum[k-2],sum[k-3]);
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,t;
int main()
{
scanf("%d",&t);
for(int i=0;i<t;i++)
{
scanf("%d",&n);
int sum[n+3];
memset(sum,0,sizeof(sum));
for(int j=3;j<=n+2;j++) scanf(" %d",&sum[j]);
for(int k=3;k<=n+2;k++){
sum[k] = sum[k]+max(sum[k-2],sum[k-3]);
}
printf("%d\n",max(sum[n+2],sum[n+1]));
}
return 0;
}
有帮助就点个赞啵,来手赞赏也是非常妙的