表达式括号匹配
洛谷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 欢迎指出更多优化方法~