1572:括號配對

const int N=400+5;

    int n,m,t;
    int i,j,k;
    //int a[N];
    char ch[N];
    int dp[N][N];
    
int main()
{
    IOS;
    while(cin>>ch+1){
        n=strlen(ch+1);
        for(int len=2;len<=n;len++){
            for(int i=1;i+len-1<=n;i++){
                j=i+len-1;
                if( (ch[i]=='(' && ch[j]==')') || (ch[i]=='[' && ch[j]==']') )
                    dp[i][j]=max(dp[i][j],dp[i+1][j-1]+2);
                for(k=i;k<j;k++){
                    dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);
                }
            }
        }
        cout<<n-dp[1][n]<<endl;
    }
    //PAUSE;
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章