[BNDSOJ] #1106代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char str[102];
 4 int dp[1020][1020];
 5 int n;
 6 bool check(int i,int j)
 7 {
 8     if((str[i-1]=='('&&str[j-1]==')')||(str[i-1]=='['&&str[j-1]==']'))
 9         return true;
10     return false;
11 }
12 int main()
13 {
14     gets(str);
15     n=strlen(str);
16     for(int i=1;i<=n;i++)
17     {
18         dp[i][i]=1;
19     }
20     for(int len=2;len<=n;len++)
21     {
22         for(int st=1;st<=n*2-len+1;st++)
23         {
24             int ed=st+len-1;
25             dp[st][ed]=INT_MAX;
26             for(int bk=st;bk<=ed;bk++)
27             {
28                 dp[st][ed]=min(dp[st][ed],dp[st][bk]+dp[bk+1][ed]);
29             }
30             if(check(st,ed)) dp[st][ed]=min(dp[st][ed],dp[st+1][ed-1]);
31         }
32     }
33     cout<<dp[1][n];
34 }

猜你喜欢

转载自www.cnblogs.com/yztblog/p/10939669.html
今日推荐