【记录】洛谷P1739-表达式括号匹配AC记
题面请查看:https://www.luogu.org/problem/P1739
思路:
见到括号就搜索,搜到与它配对的括号为止,搜不到就输出NO
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
string aa;
getline(cin,aa,'@');
if(aa.size()==0) {
cout<<"NO"<<endl;
return 0;
}
int r = 0,l = 0;
for(int i=0;i<aa.size();++i) {
if(aa[i]=='(') {
bool flag = false;
for(int j = i;j<aa.size();++j) {
if(aa[j]==')') {
flag++;
}
}
if(!flag) {
cout<<"NO";
return 0;
}
}
if(aa[i]==')') {
bool flag = false;
for(int j = i;j>0;--j) {
if(aa[j]=='(') {
flag++;
}
}
if(!flag) {
cout<<"NO";
return 0;
}
}
}
cout<<"YES";
}
70分。
改正思路:
- 用
vis数组记录每一个括号的访问情况,避免重复。 - 如果当前括号被匹配过了就没有必要看了,直接
continue; - 每次要找一个没用过的括号匹配。
改后代码:
#include <bits/stdc++.h>
using namespace std;
bool vis[2001] = {0};
int main() {
string aa;
getline(cin,aa);
if(aa.size()==0) {
cout<<"NO"<<endl;
return 0;
}
int r = 0,l = 0;
for(int i=0;i<aa.size();++i) {
if(vis[i]) {
continue;
}
if(aa[i]=='(') {
bool flag = false;
for(int j = i;j<aa.size();++j) {
if(aa[j]==')'&&vis[j]==0) {
flag++;
vis[j]++;
vis[i]++;
break;
}
}
if(!flag) {
cout<<"NO";
return 0;
}
}
if(aa[i]==')') {
bool flag = false;
for(int j = i;j>=0;--j) {
if(aa[j]=='('&&vis[j]==0) {
vis[j]++;
vis[i]++;
flag++;
break;
}
}
if(!flag) {
cout<<"NO";
return 0;
}
}
}
cout<<"YES";
}
其实细节上也改了一些的。
【记录】洛谷P1739-表达式括号匹配AC记的更多相关文章
- 洛谷 P1739 表达式括号匹配
题目链接https://www.luogu.org/problemnew/show/P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为 ...
- 洛谷P1739 表达式括号匹配
题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@"作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返 ...
- 洛谷 P1739 表达式括号匹配【STL/stack/模拟】
题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@"作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返 ...
- 洛谷 - P1739 - 表达式括号匹配 - 模拟 - 栈
https://www.luogu.org/problemnew/show/P1739 虽然应该是用栈的……但是直接模拟就可以了. #include<bits/stdc++.h> usin ...
- (栈 注意格式)P1739 表达式括号匹配 洛谷
题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”:否则返 ...
- P1739 表达式括号匹配
题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”:否则返 ...
- [折腾笔记] 洛谷P1149-火柴棒等式 AC记
原题链接: https://www.luogu.org/problem/P1149 题面简述: 给你n根火柴棍,你可以拼出多少个形如"A+B=C""A+B=C" ...
- luoguP1739 表达式括号匹配 x
P1739 表达式括号匹配 题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹 ...
- 洛谷P2444 [POI2000]病毒(AC自动机,DFS求环)
洛谷题目传送门 AC自动机入门--yyb巨佬的博客 AC自动机入手经典好题(虽然年代久远) 有了fail指针,trie树就不是原来的树型结构了,我们可以把它叫做trie图,由父节点向子节点连的边和fa ...
随机推荐
- MyBatis(2)-- MyBatis配置mybatis-config.xml
一.properties属性 1.可以在mybatis-config.xml中使用property子元素配置 <properties resource="jdbc.properties ...
- Handler的postDelayed(Runnable, long)
handler.postDelayed(myRunnable,1000)是为了轮播图片,每隔1000ms后执行一次run方法,实现轮播实例如下: public void MesageColse(){ ...
- C# leetcode 之 096 不同的二叉搜索树
C# leetcode 之 096 不同的二叉搜索树 题目描述 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 二叉搜索树定义 左子树上所有节点的值小于根节点, 右子树上左右 ...
- 品优购(IDEA版)-第一天
# 品优购(IDEA版)-第一天 品优购IDEA版应该是2019年的新项目.目前只有视频.资料其他都还是旧的. ## 1.学习目标 1:了解电商行业特点以及理解电商的模式 2:了解整体品优购的架构特点 ...
- Nexus 上传项目到私服
1. maven setting配置 <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed ...
- 运营的Python指南 - Python 操作Excel
这是一份写给运营人员的Python指南.本文主要讲述如何使用Python操作Excel.完成Excel的创建,查询和修改操作. 相关代码请参考 https://github.com/RustFishe ...
- Leetcode算法【34在排序数组中查找元素】
在之前ARTS打卡中,我每次都把算法.英文文档.技巧都写在一个文章里,这样对我的帮助是挺大的,但是可能给读者来说,一下子有这么多的输入,还是需要长时间的消化. 那我现在改变下方式,将每一个模块细分化, ...
- python items和setdefault函数
items() dict = {'runoob': '菜鸟教程', 'google': 'Google 搜索'} print("Value : %s" % dict.setdefa ...
- go xml 序列化
/** 序列化 */ package main import ( "encoding/xml" "fmt" ) // Person 结构 type Person ...
- python经典算法题:Z字变形
题目 直接看图! 思路第一步:分组 我们把传入的字符串进行分组, 每个框内的字母为1组: 我们发现每个相同颜色的框内的一组字母的特点是在传入的字符串中是连续的: 我们还发现每组字母的个数是由numRo ...