#include<iostream>
using namespace std;

// 定义最大栈大小,255+10=265,足够存储括号
const int Maxn = 255 + 10;

char st[Maxn];  // 栈数组,用来存储括号
char s[Maxn];   // 输入字符串数组
int tt;         // 栈顶指针,表示栈中元素的位置

// 向栈中添加一个字符
void insert(char c){
    st[++tt] = c;  // 栈顶指针先加1,然后在这个位置放入字符
}

// 从栈中删除一个字符
void dele(){
    tt--;  // 栈顶指针减1,相当于移除了最上面的字符
}

// 检查栈是否为空
bool isempty(){
    return tt <= 0;  // 如果栈顶指针小于等于0,说明栈是空的
}

int main(){
    // 读取输入的字符串,直到遇到'@'符号为止
    cin >> s;
    
    // 遍历字符串中的每个字符
    for(int i = 0; s[i] != '@'; i++){
        if(s[i] == '('){  // 如果遇到左括号
            insert(s[i]);  // 把它放入栈中
        }
        else if(s[i] == ')'){  // 如果遇到右括号
            if(isempty()){     // 检查栈是否为空
                insert(s[i]);  // 如果栈为空,说明这个右括号没有匹配的左括号
                break;         // 跳出循环,不再继续检查
            }
            else{
                dele();  // 如果栈不为空,从栈中移除一个左括号(表示匹配成功)
            }
        }
    }

    // 检查结束后,如果栈是空的,说明所有括号都匹配成功
    if(isempty()){
        puts("YES");  // 输出"YES"
    }
    else{
        puts("NO");   // 输出"NO"
    }
    return 0;
}

1 条评论

  • @ 2025-9-21 16:17:36

    P1427 小鱼的数字游戏

    题目描述

    小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 aia_i(长度不一定,以 00 结束),记住了然后反着念出来(表示结束的数字 00 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

    输入格式

    一行内输入一串整数,以 00 结束,以空格间隔。

    输出格式

    一行内倒着输出这一串整数,以空格间隔。

    输入输出样例 #1

    输入 #1

    3 65 23 5 34 1 30 0
    

    输出 #1

    30 1 34 5 23 65 3
    

    说明/提示

    数据规模与约定

    对于 100%100\% 的数据,保证 0ai23110 \leq a_i \leq 2^{31} - 1,数字个数不超过 100100

    • 1