括号配对

来源:互联网 发布:java软件开发面试宝典 编辑:程序博客网 时间:2024/04/28 23:21

黑书上的dp

#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=110;char tab[maxn];int f[maxn][maxn];int fun(int i,int j){if(i>j)return 0;if(f[i][j]>=0)return f[i][j];if(i==j)return f[i][j]=1;int va=maxn;if((tab[i]=='('&&tab[j]==')') || (tab[i]=='['&&tab[j]==']'))va=fun(i+1,j-1);for(int mid=i;mid<j;mid++){va=min(va,fun(i,mid)+fun(mid+1,j));}return f[i][j]=va;}int main(){freopen("in.txt","r",stdin);int n;scanf("%d",&n);for(int i=0;i<n;i++){memset(f,-1,sizeof(f));memset(tab,0,sizeof(tab));scanf("%s",tab);cout<<fun(0,strlen(tab)-1)<<endl;}}


原创粉丝点击