poj1068

 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

原文地址:https://www.cnblogs.com/okboy/p/3223439.html