设计一个算法,求在一个有效算术表达式中最大的括号嵌套深度,有效算术表达式用字符串表示,且表达式中的括号符合配对规则,引入栈或队列的基本算法完成此算法,在文件夹homework中的demo02.cpp文件中补全代码 例如输入"(1+(2*3)+((8)/4))+1",输出3,因为数字8在嵌套的3层括号中
时间: 2023-05-21 08:02:40 浏览: 88
设计一个算法判定一个算术表达式中的圆括号是否正确配....doc
以下是算法的实现,已经补全到demo02.cpp文件中:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int max_depth(string expr) {
stack<char> s;
int max_depth = 0, depth = 0;
for (char c : expr) {
if (c == '(') {
s.push(c);
depth++;
max_depth = max(max_depth, depth);
} else if (c == ')') {
s.pop();
depth--;
}
}
return max_depth;
}
int main() {
string expr = "(1 (2*3) ((8)/4)) 1";
int depth = max_depth(expr);
cout << depth << endl;
return 0;
}
```
输入字符串为"(1 (2*3) ((8)/4)) 1",输出为3。
请注意,这个算法只能处理有效的算术表达式,即括号符合配对规则。如果输入的表达式不符合规则,程序可能会出现错误。
阅读全文