//============================================================================
// Name : 2955.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
using namespace std;
int ok(char a, char b) {
return (a == '(' && b == ')') || (a == '[' && b == ']');
}
int main() {
string str;
while (true) {
cin >> str;
if (str[0] == 'e') {
return 0;
}
int len = str.length();
int **d = new int*[len + 1];
for (int i = 0; i <= len; i++) {
d[i] = new int[len + 1 - i];
}
for (int i = 0; i <= len; i++) {
d[0][i] = 0;
}
for (int i = 0; i < len; i++) {
d[1][i] = 0;
}
for (int i = 2; i <= len; i++) {
for (int j = 0; j <= len - i; j++) {
int max = -1000000000;
if (ok(str[j], str[j + i - 1])) {
int ns = d[i - 2][j + 1] + 2;
if (max < ns) {
max = ns;
}
}
for (int k = 1; k < i; k++) {
int ns = d[k][j]+ d[i - k][j + k];
if (max < ns) {
max = ns;
}
}
d[i][j] = max;
}
}
cout<<d[len][0]<<endl;
}
return 0;
}
poj2955
最新推荐文章于 2020-12-20 21:34:20 发布