ZOJ1016

来源:互联网 发布:软件测试工资 编辑:程序博客网 时间:2024/05/19 12:24

根据P序列可以恢复出括号序列,然后就可以计算W序列了。

#include<iostream>using namespace std;int main(){    int t;    cin>>t;    for (int ii=0; ii<t; ii++)    {        int n, sum = 0, p = 0;        char parenthese[100] = {0};        cin>>n;        for (int i=0; i<n; i++)        {            int buf;            cin>>buf;            for (int j=sum; j<buf; j++)                parenthese[p++] = '(';            parenthese[p++] = ')';            sum = buf;        }        bool match[100] = {false};        for (int i=0; i<n; i++)        {            int j;            for (j=0; j<p; j++)                if (parenthese[j] == ')' && !match[j])                    break;            match[j] = true;            int number = 0;            for (int k=j-1; k>=0; k--)            {                if (parenthese[k] == '(')                        number++;                if (parenthese[k] == '(' && !match[k])                {                    match[k] = true;                    break;                }            }            if (i < n-1)                cout<<number<<' ';            else                cout<<number<<endl;        }    }}



0 0