这个代码是用来干啥的
  • 板块灌水区
  • 楼主_X_Z_N_
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/9/16 19:21
  • 上次更新2024/9/16 22:22:34
查看原帖
这个代码是用来干啥的
1392543
_X_Z_N_楼主2024/9/16 19:21
01 #include <bits/stdc++.h>
02 using namespace std;
03 vector<int> v[1005];
04 string s;
05 
06 void dfs1(int x) {
07 	printf("%d", x);
08 	for(int i = 0; i < v[x].size(); i++) {
09 		dfs1(v[x][i]);
10 	}
11 }
12 
13 void dfs2(int x) {
14 	for(int i = 0; i < v[x].size(); i++) {
15 		dfs2(v[x][i]);
16 	}
17 	printf("%d", x);
18 }
19 
20 int main() {
21 	cin >> s;
22 	s = '(' + s + ')';
23 	stack<int> stk;
24 	int ans = 0, cnt = 0;
25 	for(int i = 0; i < s.size(); i++) {
26 		if (s[i] == '(') {
27 			stk.push(++cnt);
28 			ans += stk.size();
29 		} else{
30 			int x = stk.top(); stk.pop();
31 			if(!stk.empty()) {
32 				v[stk.top()].push_back(x);
33 			}
34 		}
35 	}
36 	printf("%d\n", ans);
37 	dfs1(1);
38 	printf("\n");
39 	dfs2(1);
40 	return 0;
41 }

假设程序输入的是一个合法的小括号匹配的序列,长度不超过2000。

2024/9/16 19:21
加载中...