这题总感觉在哪里做过,印象比较深刻,所以一下就做出来了;
解析看下面:
#include <bits/stdc++.h>
using namespace std;
string a;
long long b[1000005];
int main() {
int len;
int lever = 0;//括号级别
cin >> a;
len = a.length();
for (int i = 0; i < len; i++) {
if (a[i] == '(') {//左括号
lever++;//级别加1
} else {//右括号
if (b[lever] == 0) {//分数为0(里边没有括号)
b[lever]++;//加一
} else {//不为0(里边有括号)
b[lever] *= 2;//分数乘2
}
b[lever-1] += b[lever];//分数累加到上一个级别
b[lever] = 0;//当前级别分数归零
lever--;//级别减一
b[lever] %= 1000000007;//分数求模
}
}
cout << b[0] << endl;
}
1298

被折叠的 条评论
为什么被折叠?



