括号连接(本题100分) 题目描述 一个合法的括号序列定义如下: () 是合法括号序列。 如果 A 是合法括号序列,则 (A) 是合法括号系列。 如果 A,B 是合法括号序列,则 AB 是合法括号序列。 现在有若干个括号序列,不一定合法,我们可以选其中一些出来,从左到右连接起来,使之成为合法的括号序列。请你找出能连接成的最大长度的合法括号序列。 输入输出格式 输入格式: 第一行一个正整数n,表示括号序列的个数 接下来n行,每行一个括号序列,仅由小括号构成 输出格式: 一个正整数,表示可连接成的合法括号序列的最长长度 用c++写
时间: 2024-04-16 17:26:34 浏览: 82
以下是用C++实现的代码:
```cpp
#include <iostream>
#include <stack>
using namespace std;
int findMaxLength(int n) {
int max_length = 0;
for (int i = 0; i < n; i++) {
string seq;
cin >> seq;
stack<char> st;
int length = 0;
for (char c : seq) {
if (c == '(') {
st.push(c);
} else if (c == ')' && !st.empty()) {
st.pop();
length += 2;
}
}
if (!st.empty()) {
max_length = 0;
} else {
max_length = max(max_length, length);
}
}
return max_length;
}
int main() {
int n;
cin >> n;
int result = findMaxLength(n);
cout << result << endl;
return 0;
}
```
你可以将输入的括号序列个数和每个括号序列按行输入,然后运行该程序即可得到结果。
希望能对你有所帮助!如果还有其他问题,请随时提问。
阅读全文