【记录】洛谷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 ...
随机推荐
- JVM(4) 类文件结构
一.实现“平台无关性” 字节码(ByteCode)存储格式和虚拟机是实现语言无关性的基础.Java虚拟机不和包括Java在内的任何语言绑定,它只与“Clas”文件这种特定的二进制文件格式所关联,Cla ...
- MySQL基础篇(2)数据类型
MySQL提供了多种数据类型,主要包括数值型.字符串类型.日期和时间类型. 1.数值类型 整数类型:TINYINT(1字节).SMALLINT(2字节).MEDIUMINT(3字节).INT(INTE ...
- LeetCode刷题笔记(1)常用知识点
1.Integer.parseInt(String s, int radix)方法的作用是:将radix进制的字符串s转化成10进制的int型数字并返回. Integer.valueof(String ...
- Mysql数据库(十一)事务与锁机制
一.事务机制 1.事务的概念 事务是指一组互相依赖的操作单元的集合,用来保证对数据库的正确修改,保持数据的完整性,如果一个事务的某个单元操作失败,将取消本次事务的全部操作. 比如将A账户的资金转入B账 ...
- split分割文件与数据
split主要用途:在之前计算机发展的时候,我们必须分割文件,才能将大量数据放入多张软盘中,而今我们分割文件有了其他的目的,比如提高可读性,生成日志以及发送有大小限制的E-mail附件. 工作原理:s ...
- CSS盒模型以及如何解决边距重叠问题
盒模型有两种,W3C 和IE 盒子模型 W3C定义的盒模型包括margin.border.padding.content,元素的宽度width=content的宽度 IE盒模型与W3C盒模型的唯一区别 ...
- SpringCloud之Hystrix断路器(六)
整合Hystrix order-service pom.xml <dependency> <groupId>org.springframework.cloud& ...
- 7、pytest -- 捕获标准输出和标准错误输出
目录 1. 标准输出/标准错误输出/标准输入的默认捕获行为 2. 修改和去使能捕获行为 2.1. 文件描述符级别的捕获行为(默认) 2.2. sys级别的捕获行为 2.3. 去使能捕获行为 3. 使用 ...
- 明解C语言 入门篇 第三章答案
练习3-1 #include <stdio.h> int main() { int x; int y; puts("请输入两个整数."); printf("整 ...
- Jenkins 结合 ANT 发送测试报告
全局变量配置 点击 ManageJenkins进入Jenkins 管理 点击 Global Tool Configuration 进入全局变量配置 配置 Ant ,Name 自己定义一个比较好理解的名 ...