nyoj 括号匹配(二)(区间dp)
2014-05-20 17:15
267 查看
题目链接:点击打开链接
#include<stdio.h> #include<string.h> #include<stack> #define N 110 #define inf 110000 using namespace std; int dp ; char str ; int min(int a,int b){return a<b?a:b;} int ok(int x,int y) { if(str[x]=='('&&str[y]==')')return 1; if(str[x]=='['&&str[y]==']')return 1; return 0; } int solve() { int i,j,k,len; len=strlen(str); memset(dp,0,sizeof(dp));//为了让dp[i][j](当i>j时)为0; for(i=0;i<len;i++) for(j=i;j<len;j++) { if(i==j) {dp[i][j]=1; continue;} dp[i][j]=inf; } for(i=len-1;i>=0;i--) { for(j=i;j<=len-1;j++) { for(k=i;k<=j;k++) { dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); } if(ok(i,j)) dp[i][j]=min(dp[i][j],dp[i+1][j-1]);//如果i和j位置是否是一对匹配的括号 } } return dp[0][len-1]; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%s",str); int ans=solve(); printf("%d\n",ans); } return 0; }
相关文章推荐
- nyoj 15 括号匹配(二)(区间DP)
- NYOJ 括号匹配(二)(区间dp)
- NYOJ15 括号匹配(二)(区间DP)
- NYOJ - 15 - 括号匹配(二)(区间DP)
- nyoj 15 括号匹配(二)(区间DP)
- NYOJ 15 括号匹配(二)(区间dp)
- nyoj 15 括号匹配(二)(区间DP)
- nyoj 15 括号匹配(二)(区间DP)
- 区间dp 括号匹配 nyoj 15
- NYOJ15-括号匹配(二)-区间DP
- nyoj 15 括号匹配(二)(区间DP)
- 区间DP:POJ 2955括号匹配 + NYOJ 737 石子归并(一) + No.312 Burst Balloons
- [poj2955/nyoj15]括号匹配(区间dp)
- nyoj 15 括号匹配(二)(区间DP)
- nyoj 15 括号匹配(二)(区间DP)
- 【区间DP】NYOJ 737石子合并+POJ 2955 Brackets(括号匹配)+NYOJ 15 括号匹配(二)
- NYOJ 括号匹配(二) 区间DP
- NYOJ15括号匹配(=)区间DP
- nyoj 15 括号匹配(二)(区间DP)
- NYOJ 15-括号匹配(二)(经典区间DP)