zoukankan      html  css  js  c++  java
  • Hihocoder1458-Parentheses Matching(stack,vector)

    时间限制:10000ms

    单点时限:1000ms

    内存限制:256MB

    描述

    Given a string of balanced parentheses output all the matching pairs.

    输入

    A string consisting of only parentheses ‘(‘ and ‘)’. The parentheses are balanced and the length of the string is no more than 100000.

    输出

    For each pair of matched parentheses output their positions in the string.

    样例输入

    (())()()

    样例输出

    1 4
    2 3
    5 6
    7 8

    题意

    输出可以匹配的每一对括号的位置,按照左括号位置升序输出

    思路

    用stack标记’(‘的位置,扫一遍,遇到’)’就匹配最近的’(‘,用vector来存数对。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int main() {
        stack<int> p;
        char s[100100];
        while(~scanf("%s", s)) {
            vector<pair<int, int> > aa;
            int len = strlen(s);
            while(!p.empty()) p.pop();
            for(int i = 0; i < len; i++) {
                if(s[i] == '(')
                    p.push(i + 1);
                else if(s[i] == ')') {
                    int x = p.top(); p.pop();
                    aa.push_back(pair<int, int>(x, i + 1));
                }
            }
            sort(aa.begin(), aa.end());
            for(int i = 0; i < aa.size(); i++) {
                printf("%d %d
    ", aa[i].first, aa[i].second);
            }
        }
        return 0;
    }
  • 相关阅读:
    斐波那契数列
    旋转数组的最小数字
    用两个栈实现队列
    重建二叉树
    从尾到头打印链表
    2020/01/11,人活着是为了一口气
    2020/01/11,放肆和克制,敏感层次
    2020/01/11,记忆单元
    2020/01/11,经济基础决定高层建筑和个性
    git
  • 原文地址:https://www.cnblogs.com/zhien-aa/p/6274952.html
Copyright © 2011-2022 走看看