给出从第i个右括号前左括号的个数,求出第i个右括号与与之对应的左括号内有多少个括号包括该括号。
先判断第i个括号是左括号,还是右括号,如果是右括号则向前扫描,如果左括号和右括号数目相等这就是该括号内的括号个数。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int parenthesis[50];
int main(){
int len,t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&len);
memset(parenthesis,0,sizeof(parenthesis));
int a=0,b=0,st=0,cnt=0;
for(int i=0;i<len;i++)
{
scanf("%d",&b);
for(int j=0;j<b-a;j++)
parenthesis[st++]=1;
st++;
a=b;
}
for(int i=0;i<st;i++)
{
int lp=0,rp=0;
if(parenthesis[i]==0)
{
int j=i+1;
while(j--)
{
if(parenthesis[j]==0)rp++;
else lp++;
if(lp==rp)break;
}
if(cnt++==0)printf("%d",lp);
else printf(" %d",lp);
}
}
printf("\n");
}
return 0;
}