题目大意:求一对()中的括号的对数 /*(((()()())))000010101111 4 5 6666 r 当前')'前的'('的总数 1 1 1456 answer 3 4 5210 r2 与当前')'对应的'('的序号 (((()(())))(()()))000010011110010111 4 6666 8 999 r 当前')
题目大意:求一对()中的括号的对数
/*
(((()()())))
000010101111
4 5 6666 r 当前')'前的'('的总数
1 1 1456 answer
3 4 5210 r2 与当前')'对应的'('的序号
(((()(())))(()()))
000010011110010111
4 6666 8 999 r 当前')'前的'('的总数
1 1245 1 139 answer
3 5421 7 860 r2 与当前')'对应的'('的序号
*/
#include<stdio.h>
typedef struct {
int data[21];
int top;
}stac;
stac stack;
int main(){
int t,n,m,i,j;
int r[21];
int r2[21];
//freopen("in.txt","r",stdin);
scanf("%d",&t);//输入测试组数
while(t--){
stack.top=-1;//初始化栈为空
scanf("%d",&n);//输入数据长度
for(i=0;i<n;i++){
scanf("%d",&r[i]);
if(i==0){
for(j=0;j<r[i];j++){//把前r[i]个'('的序号入栈
stack.data[++stack.top]=j;//数据入栈
}
}
else{
for(j=r[i-1];j<r[i];j++){//把第r[i-1]个~r[i]个'('的序号入栈
stack.data[++stack.top]=j;//数据入栈
}
}
r2[i]=stack.data[stack.top--];//将与')'对应的'('的序号出栈
}
for(i=0;i<n;i++)
printf("%d ",r[i]-r2[i]);
printf("\n");
}
}