题目描述
取开头连续与结尾连续的长度的和与中间连续长度的最大值取max
max(s,head + tail)
C++ 代码
#include<iostream>
#include <algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
vector<int> q;
for(int i = 0;i < n;i ++)
{
int x;
cin>>x;
q.push_back(x);
}
int head = 0,tail = 0,res = 0,s = 0;
int i,j;
for(i = 0;i < n;i ++)
{
res = 0;
for(j = i;j < n;j ++)
{
if(q[j] == 1) res++;
else break;
}
s = max(res,s);
if(i == 0) head = res;
if(j == n) tail = res;
i = j;
}
cout<<max(s,head + tail)<<endl;
}
return 0;
}