题面请查看: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分。

改正思路:

  1. vis数组记录每一个括号的访问情况,避免重复。
  2. 如果当前括号被匹配过了就没有必要看了,直接continue;
  3. 每次要找一个没用过的括号匹配。

改后代码:

#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记的更多相关文章

  1. 洛谷 P1739 表达式括号匹配

    题目链接https://www.luogu.org/problemnew/show/P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为 ...

  2. 洛谷P1739 表达式括号匹配

    题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@"作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返 ...

  3. 洛谷 P1739 表达式括号匹配【STL/stack/模拟】

    题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@"作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返 ...

  4. 洛谷 - P1739 - 表达式括号匹配 - 模拟 - 栈

    https://www.luogu.org/problemnew/show/P1739 虽然应该是用栈的……但是直接模拟就可以了. #include<bits/stdc++.h> usin ...

  5. (栈 注意格式)P1739 表达式括号匹配 洛谷

    题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”:否则返 ...

  6. P1739 表达式括号匹配

    题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”:否则返 ...

  7. [折腾笔记] 洛谷P1149-火柴棒等式 AC记

    原题链接: https://www.luogu.org/problem/P1149 题面简述: 给你n根火柴棍,你可以拼出多少个形如"A+B=C""A+B=C" ...

  8. luoguP1739 表达式括号匹配 x

    P1739 表达式括号匹配 题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹 ...

  9. 洛谷P2444 [POI2000]病毒(AC自动机,DFS求环)

    洛谷题目传送门 AC自动机入门--yyb巨佬的博客 AC自动机入手经典好题(虽然年代久远) 有了fail指针,trie树就不是原来的树型结构了,我们可以把它叫做trie图,由父节点向子节点连的边和fa ...

随机推荐

  1. Mysql数据库(七)触发器

    一.MySQL触发器 触发器是由MySQL的基本命令事件来触发某种特定操作,这些基本的命令由INSERT.UPDATE.DELETE等事件来触发某些特定操作.满足触发器的触发条件时,数据库系统就会自动 ...

  2. mysql数据迁徙详解

    数据迁徙是每个后端都会遇到的工作之一,本文介绍了一些常见的数据迁徙方法与工具 mysqldump:数据结构不变的数据迁徙 导出数据 mysqldump -u root -p DATABASE_NAME ...

  3. iOS11 SDK 新特性 CoreML 及swift 小demo

    github代码 如果本博客对您有帮助,希望可以得到您的赞赏! swift 机器学习Core ML的简单调用小demo.完整代码附上: https://github.com/Liuyubao/LYBC ...

  4. Mongoose 基本用法

    1. SchemaTypes数据类型 数据类型 描述 String 字符串 Number 数字 Date 日期 Boolean 布尔值 Mixed 混合 Objectid 对象ID Array 数组 ...

  5. 使用promise封装ajax

    直接上代码: function Ajax(method, headers, url, data, progress = null) { return new Promise(function (res ...

  6. 【IT教程-Oracle】尚观Oracle白金级入门教程

    链接: https://pan.baidu.com/s/1GMncQN6mpgaH3hZQjGelaA 提取码: qu6j

  7. Kong05-Kong 的健康检查和监控

    您可以让 Kong 代理的 API 使用 ring-balancer , 通过添加包含一个或多个目标实体的upstream 实体来配置,每个目标指向不同的IP地址(或主机名)和端口.ring-bala ...

  8. [考试反思]0929csp-s模拟测试55:消逝

    菜得过分. 面对T1的大板子不知所措,然后T2的贪心不小心把排序语句删了... T1这种大模板啊...其实我是觉得我能打出来的,然后先用一个小时码了一个2k. 然后做T2想贪心就出来了.十分钟码完T3 ...

  9. python_day3(文件处理)

    1.文件处理 #Author:Elson Zeng #data = open("test").read() # f = open("test",'a',enco ...

  10. 深入理解@LoadBalanced注解的实现原理与客户端负载均衡

    前提 在阅读这篇博客之前,希望你对SpringCloud套件熟悉和理解,更希望关注下微服务开发平台 概述 在使用springcloud ribbon客户端负载均衡的时候,可以给RestTemplate ...