区间dp括号匹配

来源:互联网 发布:音频剪辑软件app 编辑:程序博客网 时间:2024/05/21 11:23

题目

#include<bits/stdc++.h>using namespace std;typedef long long LL;int t;int n;int dp[110][110];string s;bool judge(int i,int j){    if(s[i-1]=='('&&s[j-1]==')' || s[i-1]=='['&&s[j-1]==']') return true;    return false;}void solve(){    cin>>t;    while(t--)    {        cin>>s;        memset(dp,0,sizeof(dp));        for(int l=2;l<=s.size();l++)        {            for(int i =1;i<=s.size()-l+1;i++)            {                int j = i+l-1;                dp[i][j] = judge(i,j) ? dp[i+1][j-1] + 2 : dp[i+1][j-1];                for(int k =i;k<j;k++)                {                    dp[i][j] =max(dp[i][j],dp[i][k]+dp[k+1][j]);                }            }        }        printf("%d\n",s.size()-dp[1][s.size()]);    }}int main(){    solve();    return 0;}
0 0
原创粉丝点击