【记录】洛谷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 ... 
随机推荐
- django-表单之模型表单(三)
			models.py-->forms.py-->views.py(get)--index.html-->views.py(post)-->home.html urls.py fr ... 
- mybatis的插件机制
			一.mybatis的插件介绍 关于mybatis的插件,我想大家也都用过,就比如最常用的逆向工程,根据表结构生成model,dao,xml文件,还有分页插件,那这些插件的工作原理是怎么样的呢,就比如分 ... 
- Linux下搭建.NetCore3.0环境及创建项目
			================================================== ================================================= ... 
- 暑期集训20190726 跳动(skip)
			[题目描述] 福州三中的操场上有着数不尽的跳动的小朋友. 当然善于思考的你总能从中发掘出不一样的问题 福州三中的跑道是一个n个格子围成的圆形,从0~n-1编号,有m个同学,第i个同学步长为a[i], ... 
- SpringBoot项目热启动
			一.添加POM依赖 <!-- 热部署模块 --> <dependency> <groupId>org.springframework.boot</groupI ... 
- [网络]HTTP
			HTTP HTTP 简介 HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本 ... 
- C++总结(1)keywords to the class
			目录 Chapter 1.关于类的关键字 1. class,struct与union 2.private,public与protected 3.friend 4.virtual 5.const 6.i ... 
- docker showdoc安装
			自动脚本安装 前言 自动脚本脚本利用docker来安装运行环境,适用于linux服务器.如果你的服务器没有docker服务,脚本会尝试安装之.安装docker的过程可能有些慢.如果你已经安装过dock ... 
- canvas画圆环%显示
			我: JS代码: function circleProgress(id,value,average){ var canvas = document.getElementById(id); var ... 
- 反射与泛型--使用泛型反射API打印出给定类的所有内容
			package chapter8Demos; import java.lang.reflect.*; import java.util.Arrays; import java.util.Scanner ... 
