四个测试点,只对了一个,错误疑似数组越界之类的
  • 板块题目总版
  • 楼主lghyh
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/12 21:30
  • 上次更新2024/7/13 07:41:13
查看原帖
四个测试点,只对了一个,错误疑似数组越界之类的
800273
lghyh楼主2024/7/12 21:30

题目描述

张三今天刚刚学会使用括号,不过他分不清小中大括号和尖括号,不知道怎么使用其他括号,他认为(>以及{]是正确的(其实是错误的),你能帮助他判断括号是否使用正确(匹配)吗?

输入

输入文件包含六组测试数据,每组测试数据是一行只包含’(‘,’)’,’{‘,’}’,’[‘,’]’,’<’,’>’的字符串(长度不超过10000)。

输出

对于每组测试数据,如果使用正确输出yes,否则输出no。每个占一行。

样例输入 复制

[>

([]{<>})

({[<>]})

()

()

()

样例输出 复制

no

yes

yes

yes

yes

yes

代码如下

#include<bits/stdc++.h>
using namespace std;
bool check(char x,char y){
	if(x=='('&&y==')') return true;
	if(x=='['&&y==']') return true;
	if(x=='{'&&y=='}') return true;
	if(x=='<'&&y=='>') return true;
	return false;
}
int main()
{
	int n=6;
	stack<char> in;
	string str;
	for(int i=0;i<n;i++){
		str.clear();
		in=stack<char>();
		bool b=true;
		getline(cin,str);
		for(int j=0;j<str.length();j++){
			if(str[j]=='('||str[j]=='['||str[j]=='{'||str[j]=='<') in.push(str[j]);
			else{
				if(check(in.top(),str[j])) in.pop();
				else b=false;
			}
			
		}
		if(!in.empty()) b=false;
		if(b) cout<<"yes"<<endl;
		else cout<<"no"<<endl;
	}
	return 0;
}
2024/7/12 21:30
加载中...