1 /*读懂题意:pi表示右括号前面有几个左括号, 2 wi表示与右括号配对的左括号与该右括号之间有几个左括号, 3 包括配对的,已经配对过的左括号不能再与右括号配对 4 解法:还原原来的字符串*/ 5 #include<stdio.h> 6 #include<string.h> 7 #include<algorithm> 8 using namespace std; 9 int main() 10 { 11 int i,j,k,n,m; 12 int a[505],b[505],c[505]; 13 int t; 14 scanf("%d",&t); 15 while(t--) 16 { 17 scanf("%d",&n); 18 memset(a,0,sizeof(a)); 19 memset(b,0,sizeof(b)); 20 memset(c,0,sizeof(c)); 21 j=0; 22 for(i=1;i<=n;i++) 23 { 24 scanf("%d",&a[i]); 25 for(k=0;k<a[i]-a[i-1];k++,j++) 26 { 27 c[j]=0; 28 } 29 c[j++]=1; 30 } 31 /*for(i=0;i<j;i++) 32 printf("%d ",c[i]);*/ 33 int sum,flag=0; 34 for(i=0;i<j;i++) 35 { 36 if(c[i]==1) 37 { 38 for(k=i-1,sum=1;k>=0;k--) 39 { 40 if(c[k]==0 && b[k]==1) 41 sum++; 42 else if(c[k]==0 && b[k]==0) 43 { 44 b[k]=1; 45 if(flag==0) { printf("%d",sum); flag=1;} 46 else printf(" %d",sum); 47 break; 48 } 49 } 50 } 51 } 52 printf(" "); 53 } 54 return 0; 55 }
18:08:12