C++课后习题训练记录Day55
2026/6/11 5:34:51 网站建设 项目流程

1.练习项目:

问题描述

小蓝有一个长度为 n 的括号串,括号串仅由字符()构成,请你帮他判断一下该括号串是否合法,合法请输出Yes,反之输出No

合法括号序列:

  1. 空串是合法括号序列。

  2. 若 s 是合法括号序列,则(s)也是合法括号序列。

  3. 若 s,t 都是合法括号序列,则 st 也是合法括号序列。

例如()()(())(())()均为合法括号序列。

输入格式

第一行包含一个正整数 n ,表示括号串的长度。

第二行包含一个长度为 n 的括号串。

输出格式

输出共 1 行,若括号串合法请输出Yes,反之输出No

2.选择课程

在蓝桥云课中选择题库,选择题号2490并开始练习。

3.开始练习

(1)源码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
stack<char>stk;
char s[N];
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;
cin>>n;
cin>>s;
bool ans=true;
for(int i=0;i<n;i++){
if(s[i]=='('){
stk.push('(');
}else{
if(stk.size()&&stk.top()=='('){
stk.pop();
}else{
ans=false;
}
}
}
if(stk.size()){
ans=false;
}
cout<<(ans?"Yes":"No")<<'\n';
return 0;
}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询