表达式括号匹配
洛谷P1739
Hi~ 今天我们来看一下这道题

简洁明了的题目 我喜欢~
这道题可以用栈解决 但是也有更初级其他办法
最直观的思路就是 一个变量记左括号 一个记右括号 加一些特殊判断 最后看左括号数量和右括号说量是否一样
简洁一点的话 可以把左右记在一个变量里
总结一下 就是一个变量a=0 遇到左括号++ 遇到右括号-- 如果判断到第一个是右括号直接cout 如果a已经小于零(右括号已经比左括号多了)也直接cout
自己试一下吧
//
// main.cpp
// 表达式括号匹配
//
// Created by Helen on 2019/12/25.
// Copyright © 2019 Helen. All rights reserved.
//
#include <iostream>
#include <cstring>
using namespace std;
char c;
int ans=0;
int main ()
{
for (int i=0;;i++)
{
cin >> c;
if (i==0 && c==')')
{
cout << "NO" << endl;
return 0;
}
if (c=='(')
ans++;
if (c==')')
ans--;
if (ans<0)
{
cout << "NO" << endl;
return 0;
}
if (c=='@')
{
if (ans==0)
{
cout << "YES" << endl;
return 0;
}
cout << "NO" << endl;
return 0;
}
}
}
Understand?
Au revoir~
----------------------------------------✂︎---------------------------------------------
此题解已经AC 欢迎指出更多优化方法~
本文详细解析洛谷P1739括号匹配问题,通过使用变量记录左右括号数量,实现对输入字符串的有效验证。文章提供了一种简洁的算法思路,并附带C++代码实现。
750

被折叠的 条评论
为什么被折叠?



