如22-2-200-22220 输出连续子串的最大积的2的幂次,负数输出0
void f()
{
int t;
cin>>t;
vector<int> v;
for (int i=0;i<t;i++)
{
int n;
cin>>n;
int*a=new int[n];
for (int j=0;j<n;j++)
{
cin>>a[j];
}
int temp=0,current=0,max=0;
for (int i=0;i<n;i++)
{
if(a[i]==2) temp++;
if(a[i]==-2)
{
if(current==0)
{
current=temp+1;
if(temp>max) max=temp;
temp=0;
}
else
{
temp=current+temp+1;
current=0;
}
}
if(a[i]==0||i==n-1)
{
current=0;
if(temp>max) max=temp;
temp=0;
}
}
temp=0;current=0;int max2=0;
for (int i=n-1;i>=0;i--)
{
if(a[i]==2) temp++;
if(a[i]==-2)
{
if(current==0)
{
current=temp+1;
if(temp>max2) max2=temp;
temp=0;
}
else
{
temp=current+temp+1;
current=0;
}
}
if(a[i]==0||i==n-1)
{
current=0;
if(temp>max2) max2=temp;
temp=0;
}
}
int t=max>max2?max:max2;
v.push_back(t);
delete[]a;
}
for (int i=0;i<t;i++)
{
cout<<"Case #"<<i+1<<": "<<v[i]<<endl;
}
}