zoukankan      html  css  js  c++  java
  • 计蒜客 括号匹配

    问题描述
    蒜头君在纸上写了一个串,只包含’(‘和’)’。一个’(‘能唯一匹配一个’)’,但是一个匹配的’(‘必须出现在’)’之前。请判断蒜头君写的字符串能否括号完全匹配,如果能,输出配对的括号的位置(匹配的括号不可以交叉,只能嵌套)。
    输入格式
    一行输入一个字符串只含有’(‘和’)’,输入的字符串长度不大于50000。
    输出格式
    如果输入括号不能匹配,输出一行”No”,否则输出一行”Yes”,接下里若干行每行输出 2 个整数,用空格隔开,表示所有匹配对的括号的位置(下标从 1 开始)。你可以按照任意顺序输出。
    本题答案不唯一,符合要求的答案均正确
    样例输入
    ()()
    样例输出
    Yes
    1 2
    3 4
    【代码】:

    #include <iostream>
    #include <cstdio>
    #include <stack>
    using namespace std;
        int ans[50000][2];
        stack<int>q;
    int main()
    {
        int c1=0;
        char i;
        int cnt=0;
        while(scanf("%c",&i)==1&&i!=10)
        {   cnt++;
            if(i=='(')q.push(cnt);
            if(i==')')
            {
                if(q.empty() ){cout<<"No";return 0;}
                ans[c1][0]=q.top() ;
                ans[c1][1]=cnt;
                c1++;
                q.pop() ;
             } 
        }
        if(q.empty())
        {
            cout<<"Yes"<<"
    ";
            for(int i=0;i<c1;i++)
            {
                cout<<ans[i][0]<<" "<<ans[i][1];
                if(i+1!=c1)cout<<endl;
             } 
        }
        else cout<<"No";
        return 0;
    } 
    
  • 相关阅读:
    最短路径的三种实现方法
    c/c++小知识
    c++ char * const p问题
    C++ typedef 四个用途
    [转]c++面向对象基础
    [转]C++中引用(&)的用法和应用实例
    表情包。
    linux基础学习
    redis缓存在项目中的使用
    关于redis
  • 原文地址:https://www.cnblogs.com/Roni-i/p/9215685.html
Copyright © 2011-2022 走看看