题意:中文.....
思路:
pku有一道题,经典的括号匹配(区间DP)题目,那道题目是求的最长满足条件的子串的长度,那里的子串与这里的子串条件不一样。
详细:
对于这个例子
)((())))(()())
pku的最长子串是12
而这里是6
这里我们是求的连续的满足的子串。
dp[i]表示0到i的最长的满足的连续的子串
则有:
if(str[i - dp[i - 1] - 1] == '(' && str[i] == ')') dp[i] = dp[i - dp[i - 1] - 1] + 2;
if (dp[i - dp[i - 1] - 2])
dp[i] += dp[i - dp[i - 1] - 2]
//#pragma comment(linker,"/STACK:327680000,327680000")#include #include #include #include #include #include #include #include #include #include #include #include #include