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;
    }
  • 相关阅读:
    最短路详解
    树状数组基础
    并查集初步
    python shell的交互模式和文本编辑模式
    基于python的selenium自动化测试环境搭建
    Nagios基本搭建
    mysql错误代码对照表较完整
    搭建phpMyAdmin
    Cent OS 7 搭建MySQL
    详解封装源码包成RPM包
  • 原文地址:https://www.cnblogs.com/zhien-aa/p/6274952.html
Copyright © 2011-2022 走看看