• poj 1068(模拟题)


    Parencodings
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 23545   Accepted: 13802

    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

    思路:简单回溯即可;
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cstdlib>
    #include<iomanip>
    #include<cmath>
    #include<vector>
    #include<queue>
    #include<stack>
    using namespace std;
    #define PI 3.141592653589792128462643383279502
    int main(){
        freopen("in.txt","r",stdin);
        int t,n,m,c,p[30],pp[30];
        bool w[50];
        cin>>t;
        while(t--){
            memset(w,true,sizeof(w));
            cin>>n;
            c=1;
            for(int i=1;i<=n;i++){
                cin>>m;
                w[m+i]=false;
                p[c++]=m+i;
            }
            int k=0,b=0,kk;
            for(int i=1;i<c;i++){
                kk=p[i];
                for(int j=kk;j>=1;j--){
                    if(w[j]==false)
                        k++;
                    else
                        b++;
                    if(b-k==0) {
                        pp[i]=k;
                        k=0;b=0;
                        break;
                    }
                }
            }
            for(int i=1;i<c;i++){
                if(i!=1)cout<<" ";
                cout<<pp[i];
            }
            cout <<endl;
        }
        return 0;
    }
  • 相关阅读:
    word删除脚注的方法
    移动最小二乘
    word插入的对象和文字混合到了一起的解决办法
    插值
    中学小学学校学生德育量化管理系统_文明班评比量化系统_德育评价系统_德育量化考核系统_政教管理系统_政教考核系统
    需求的最初形式:12306ng的需求小说
    异步javascript的原理和实现
    需求与设计过程(1)用例
    项目管理沙龙第十二次会议纪要为没有共识的项目组定制敏捷方法
    项目进度控制的技术
  • 原文地址:https://www.cnblogs.com/yoyo-sincerely/p/5052494.html
Copyright © 2020-2023  润新知