#include<iostream> #include<cstring> using namespace std; int main() { int temp,p,n,t,N; bool v[20];//访问了第几个左括号(用0标记第一个左括号,从左往右数) ,访问之后标记为1,事先清零 scanf("%d",&t); while(t--) { p=0; memset(v,0,sizeof(v)); scanf("%d",&N); while(N--) { scanf("%d",&n);//读取当前右括号前的左括号数量 if(n!=p)//当前右括号与前一个右括号相比,若前面的左括号数量不等,则离它最近的左括号距离为1 { temp=1; } else//当前右括号与前一个右括号相比,若前面的左括号数量相等,则向左迭代寻找离它最近的左括号 { while(v[n-temp]) temp++; } printf("%d",temp); if(N)//若不为最后一次输出则加空格,否则换行 printf(" "); else printf("\n"); v[n-temp]=1;//标记已访问的左括号 p=n;//更新上一个右括号前面的左括号数量 } } }