poj1068Parencodings

原创 2016年05月30日 18:00:22

http://poj.org/problem?id=1068

1.利用P-sequence里的数值,还原出括号串S。

2.从左往右遍历括号串S,遇到右括号停止,设置计数器。指针回退,遇到左括号不管有没有匹配过,都要

计数器+1,直到遇到左括号没有匹配过停止。新匹配的左括号处置新的特殊字符,标记为访问过,为下一次

指针回退做准备。

<span style="font-size:18px;">#include <stdio.h>
char S[25];
int num[25];
int main()
{
    int t,n,i,j,k,count;
    scanf("%d",&t);
    while(t--)//测试样例的个数
    {
        scanf("%d",&n);      
        num[0]=0;        
        k=0;
        for(i=1;i<=n;i++)//P-sequence
            scanf("%d",&num[i]);
        for(i=1;i<=n;i++)//make S
        {
            for(j=0;j<(num[i]-num[i-1]);j++)
                S[k++]='(';
            S[k++]=')';
        }
        for(i=0;i<k;i++)//遍历括号串S
        {
            if(S[i]==')')
            {
                count=0;//计数器置0
                for(j=i-1;j>=0;j--)//从右括号往左扫描
                {
                    if(S[j]!=')')
                        count++;
                    if(S[j]=='(')
                    {
                        S[j]='~';
                        break;
                    }
                }
                printf("%d ",count);
            }
        }
        printf("\n");
    }
    return 0;
}


</span>


版权声明:本文为博主原创文章,未经博主允许不得转载。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj1068Parencodings
举报原因:
原因补充:

(最多只允许输入30个字)