#define INF 0x7f7f7f7f #define MAXN 100005 #define N 200005 #define P 2 #define MOD 99991
typedeflonglong ll;
namespace fastIO { //char buf[(1 << 22)], *p1 = buf, *p2 = buf; inlineint(){ char c = getchar(); int x = 0, f = 1; while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); } while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f; } }
usingnamespace fastIO; usingnamespacestd;
string s; int dp[130][130]; intmain(){ while (cin >> s && s != "end") { int n = s.size(); memset(dp, 0, sizeof(dp)); for (int len = 2; len <= n ;len++) for (int i = 1; i + len - 1 <= n; i++) { int j = i + len - 1; dp[i][j] = dp[i + 1][j]; for (int k = i + 1; k <= j; k++) if ((s[i - 1] == '(' && s[k - 1] ==')') || (s[i - 1] == '[' && s[k - 1] == ']')) dp[i][j] = max(dp[i][j], dp[i + 1][k - 1] + dp[k + 1][j] + 2); } cout << dp[1][n] << endl; } }
近期评论