zoukankan      html  css  js  c++  java
  • 模拟 --- 简单括号匹配

    Parencodings
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 19067   Accepted: 11502

    Description

    Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways:
    q By an integer sequence P = p1 p2...pn where pi is the number of left parentheses before the ith right parenthesis in S (P-sequence).
    q By an integer sequence W = w1 w2...wn where for each right parenthesis, say a in S, we associate an integer which is the number of right parentheses counting from the matched left parenthesis of a up to a. (W-sequence).

    Following is an example of the above encodings:

    S (((()()())))
    P-sequence 4 5 6666
    W-sequence 1 1 1456

    Write a program to convert P-sequence of a well-formed string to the W-sequence of the same string.

    Input

    The first line of the input contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case is an integer n (1 <= n <= 20), and the second line is the P-sequence of a well-formed string. It contains n positive integers, separated with blanks, representing the P-sequence.

    Output

    The output file consists of exactly t lines corresponding to test cases. For each test case, the output line should contain n integers describing the W-sequence of the string corresponding to its given P-sequence.

    Sample Input

    2
    6
    4 5 6 6 6 6
    9 
    4 6 6 6 6 8 9 9 9
    

    Sample Output

    1 1 1 4 5 6
    1 1 2 4 5 1 1 3 9

    【题目来源】

    Tehran 2001

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

    【题目大意】

    给你一串数字,每个数字的位置都是一个右括号,并且本身的值表示该右括号的左边有多少左括号。

    现在要你匹配这些右括号,输出一列数字,这些数字表示该右括号到达与该右括号匹配的左括号这一段中有多少个左括号。

    翻译得太差强人意了,有时候题意只可意会,不可言传==||

    【题目分析】

    题目很简单,直接模拟就可。

    AC代码:

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #define MAX 100000
    using namespace std;
    struct Node
    {
        bool lor;
        bool vis;
    };
    Node node[100000];
    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
            int n;
            int i,j;
            int a[25];
            for(i=0;i<MAX;i++)
                node[i].vis=false;
            cin>>n;
            a[0]=0;
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            int index=-1;
            int temp;
            for(i=1;i<=n;i++)
            {
                temp=a[i]-a[i-1];
                for(j=0;j<temp;j++)
                {
                    node[++index].lor=0;
                }
                node[++index].lor=1;
            }
    //        cout<<index<<endl;
    //        for(i=0;i<=index;i++)
    //            printf("%d ",node[i].lor);
    //        puts("");
            int cnt;
            int ans[MAX];
            int index1=-1;
            for(i=0;i<=index;i++)
            {
                cnt=0;
                if(node[i].lor==1)
                {
                    for(j=i;j>=0;j--)  //倒过来数
                    {
                        if(node[j].lor==0)
                        {
                            cnt++;
                           if(!node[j].vis)
                                {
                                    node[j].vis=true;
                                    ans[++index1]=cnt;
    //                                cout<<"cnt="<<cnt<<endl;
                                    break;
                                }
                        }
                    }
                }
                cnt=0;
            }
    //        cout<<"index1="<<index1<<endl;
            for(i=0;i<=index1;i++)
            {
                if(i==0)
                   cout<<ans[i];
                else
                   cout<<" "<<ans[i];
            }
            puts("");
        }
        return 0;
    }
  • 相关阅读:
    二、推导式/自省
    一、Python编码规范(PEP 8)/工程结构化
    十、持续集成(Jenkins+Ant+Jmeter)
    九、Jmeter之逻辑控制器
    八、Jmeter分布式测试
    七、ServerAgent监控服务器资源
    六、场景设计/报告分析
    五、集合点/断言/关联
    .html页面引入vue并使用公共组件
    vue.js页面刷新出现闪烁问题的解决
  • 原文地址:https://www.cnblogs.com/crazyacking/p/3744105.html
Copyright © 2011-2022 走看看