我觉得这道题不必用栈,简单的应用就可以解决的
#include<stdio.h>
int main()
{
int i,t,j,n,a[42],p,k,num;
char b[42];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=0;j<a[0];j++)
b[j]='(';
b[j++]=')';
for(i=1;i<n;i++)
{
k=a[i]-a[i-1];
while(k--)
b[j++]='(';
b[j++]=')';
}
p=0;
for(i=1;i<2*n;i++)
{
if(b[i]!=')')
continue;
else
{
num=0;
for(k=i-1;b[k]!='(';k--)
if(b[k]=='a')
num++;
num++;
a[p++]=num;
b[k]='a';
}
}
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
}
return 0;
}