zoukankan      html  css  js  c++  java
  • poj 1068--Parencodings

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

    题目大意:给定一个序列P,代表这个序列中一共有n对括号,第i个右括号左边有Pi个左括号,要求求出序列w,序列w表示第i个右括号所组成的一对括号中有Wi对括号(包括本身)


    思路:先把P序列转化为括号序列,然后从左向右找右括号,从这个括号向左找第一个左括号,把能和它配对的左括号一并删除(中间一定没有别的括号存在)


    #include<iostream>
    #include<cstdio>
    using namespace std;
    int a[30];//恢复的括号序列,1表示左括号,2表示右括号 
    int b[30];
    int T,n,x,cnt;
    int main()
    {
        scanf("%d",&T);
        for (int I = 1;I <= T;I++)
        {
            cnt = 0;
            scanf("%d",&n);
            for (int i=1;i<=n;i++)
            {
                scanf("%d",&x); 
                a[x+i] = 2; 
            }
            for (int i=1;i<=n*2;i++)
                if (!a[i])    a[i] = 1;
            for (int i=1;i<=n*2;i++)
                if (a[i] == 2)
                {
                    a[i] = 0;
                    cnt ++; //右括号个数,编号 
                    for (int j=i-1;j>=1;j--)
                    {
                        if (a[j] == 1) 
                        {
                            b[cnt] = (i-j+1)/2;
                            a[j] = 0;
                            break;
                        }
                        a[j] = 0;
                    }
                }
                for (int i=1;i<=cnt;i++) printf("%d ",b[i]);
                printf("
    ");
        }
    }
  • 相关阅读:
    MR案例:内连接代码实现
    分布式缓存DistributedCache
    MR案例:Map-Join
    hadoop随手笔记
    Job流程:决定map个数的因素
    Job流程:提交MR-Job过程
    MR案例:Reduce-Join
    MR案例:倒排索引
    MR案例:路径过滤PathFilter
    MR案例:分区和排序
  • 原文地址:https://www.cnblogs.com/liumengyue/p/5616691.html
Copyright © 2011-2022 走看看