zoukankan      html  css  js  c++  java
  • poj 1068 Parencodings(模拟)

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

    题意:输入一组数表示左边有几个括号,输出一组数表述该右括号里搭配好了几个括号

    #include<stdio.h>
    const int MAXN=10000;
    
    int main()
    {
        int T,i,j,n,tes,cas,t;
        int right,left;
        char str[MAXN];
        scanf("%d",&T);
        int a[MAXN],rem[MAXN*5];
        while(T--)
        {
            tes=cas=0;
            scanf("%d",&n);
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            for(i=1;i<=n;i++)
            {
                t=a[i]-a[i-1];//有几个做括号
                while(t--)
                {
                    str[cas++]='(';
                }
                str[cas++]=')';
            }
            for(i=0;i<cas;i++)
            {
                if(str[i]==')')
                {
                    right=1;
                    left=0;
                    for(j=i-1;j>=0;j--)
                    {
                        if(right==left) break;//做括号和右括号个数匹配,就说明完整了
                        if(str[j]=='(') left++;
                        else if(str[j]==')') right++;
                    }
                    rem[tes++]=right;
                }
            }
            for(i=0;i<n;i++)
            {
                  if(i) printf(" ");
                printf("%d",rem[i]);
    
            }
            printf("\n");
        }
        return 0;
    }
  • 相关阅读:
    第十次作业
    第九次作业
    第八次作业总结
    第八次作业
    C语言总结(6)
    作业十二总结
    作业十一总结
    实验十总结
    实验九总结
    第一次附加作业
  • 原文地址:https://www.cnblogs.com/zsboy/p/2908658.html
Copyright © 2011-2022 走看看