2046: option
1.描述
小猫在研究序列。小猫在研究选择。
给定一个长度为N的序列a1,a2,…,aN,请你在这N个元素中选出一些(可以不选,可以全选),使得对于任意1≤i<N,ai与ai+1不被同时选,求选出的数的和最大是多少。
输入
第一行一个正整数T,表示数据组数。每组数据的第一行一个正整数N。接下来一行N个整数a1,a2,…,aN。
输出
T行,每行一个整数,表示每组数据的答案。
样例输入
1
5
1 100 101 100 1
样例输出
200
2.代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a[1001]= {0},s=0,i,j,n,x=-1,y=-1,m=0;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
for(i=1; i<=n; i++)
{
if(a[i]>=0&&i!=x+1)
{
s+=a[i];
x=i;
}
}
for(i=2; i<=n; i++)
{
if(a[i]>=0&&i!=y+1)
{
m+=a[i];
y=i;
}
}
if(s>m)
printf("%d\n",s);
else
printf("%d\n",m);
}
return 0;
}