题面请查看: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. 【构建工具】《Maven实战》读书笔记

    Maven是我们在做Java开发过程中用经常用到的一个辅助工具.本篇博客是我学习Maven的一个记录博客,学习过程主要参考<Maven实战>这本书.同时也参考了Maven的官方文档. 1. ...

  2. LeetCode刷题笔记(6)按照索引计算int[] 数组中的和([Time Limit Exceeded]问题)

    Easy303 Easy633 package easy; public class e303 { private int[] sums; public e303(int[] nums) { sums ...

  3. C# leetcode 之 096 不同的二叉搜索树

    C# leetcode 之 096 不同的二叉搜索树 题目描述 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 二叉搜索树定义 左子树上所有节点的值小于根节点, 右子树上左右 ...

  4. [考试反思]1027csp-s模拟测试90:自我

    其实这套题很好. 但是这次,在T1爆炸的同时,T2和T3并没有出现能弥补的表现. 在AK仍然存在的同时,我居然连一个AC都没有. 所以最后就是一无是处的一场. 考试结束前估分:100+100+30=2 ...

  5. permu 莫队 总结

    由于每次询问静态区间里完整值域段的最大大小 貌似很好用莫队转移,所以考虑怎么转移 当给它扩展一个数时,就是给值域添加了一个值 这个值可能已经存在,也可能是新的 有的神仙做法是维护了一个并查集,然而我这 ...

  6. JS中获取元素属性的逆天大法

    给大家聊下js中获取元素属性的逆天大法,胆小慎入,切记切记!!! innerHTML.outerHTML.innerText .outerText.value.text().html(),val() ...

  7. ElasticSearch(二):文档的基本CRUD与批量操作

    ElasticSearch(二):文档的基本CRUD与批量操作 学习课程链接<Elasticsearch核心技术与实战> Create 文档 支持自动生成文档_id和指定文档_id两种方式 ...

  8. 简单搭建syslog-ng server记录log

    ### 简单搭建syslog-ng server记录log 安装syslog-ng apt-get install syslog-ng 安装syslog-ng 配置syslog-ng vim /etc ...

  9. html5 textarea 写入换行的方法

    html5 textarea 写入换行的方法<pre> <textarea id="fwe" class="selmiao" cols=&qu ...

  10. JavaScript文档对象模型(DOM)——DOM核心操作

    文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标记语言(HTML或XML)的标准编程接口. W3C已经定义了一系列DOM接口,通过这些DOM接口可 ...