NYOJ 15
来源:互联网 发布:淘宝卖家漏发货怎么办 编辑:程序博客网 时间:2024/05/21 22:51
#include<cstdio>#include<cstring>int t;char a[101];int dp[101][101];//这里dp的是:从第i个字符到第j个字符之间有多少个括号需要加入匹配。void getdp(char * a){memset(dp,0,sizeof(dp[0][0]));for(int i=0;i<101;i++)dp[i][i]=1;//初始化dpfor(int j=1;j<strlen(a);j++)//第i~j-1个字符到j所需要的括号数。for(int i=0;i<j;i++){/* if(a[j]=='('||a[j]=='['){dp[i][j]=dp[i][j-1]+1;continue;} */int k=j;dp[i][j]=dp[i][j-1]+1;for(;k>=i;k--){if(a[k]=='['&&a[j]==']'||a[k]=='('&&a[j]==')'){if(dp[i][j]>dp[i][k-1]+dp[k+1][j-1]){dp[i][j]=dp[i][k-1]+dp[k+1][j-1];}}}}}int main(){/*1.当i==j时,dp的值必定为1.2.当char[i]与char[j]匹配时,dp[i][j]=dp[i+1][j-1];3.当char[i]与char[j-1]之间有与char[j]匹配的字符char[k] k>=i&&k<=j-1dp[i][j]=dp[i][k-1]+dp[k+1][j-1];(由2推导)注意存在多个k的情况,取dp[i][k-1]+dp[k+1][j-1]最小的情况。4.当不存在k时dp[i][j]=dp[i][j-1]+1;*/scanf("%d",&t);getchar();//清缓存while(t--){gets(a);getdp(a);printf("%d\n",dp[0][strlen(a)-1]);/* for(int i=0;i<strlen(a);i++){for(int j=0;j<strlen(a);j++)printf("%2d",dp[i][j]);puts("");} */}return 1;}
0 0
- nyoj-15
- NYOJ 15
- nyoj 15 括号匹配
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- NYOJ
- nyoj
- NYOJ
- 中兴客户端登陆不了,显示“收到无效的策略内容”
- java 同步通信技术的应用
- sed:语法命令学习
- 姿浊啄拽撰昨座纂奏滓拽撰昨座纂
- oc中对象归档概念
- NYOJ 15
- 转纵啄作捉拙祖佐综尊作捉拙祖佐
- Android 开发之旅:view的几种布局方式及实践
- 滋籽啄赘撞仔追桌专咨赘撞仔追桌
- 桶排序和样本排序(Bucket Sort and Sample Sort)
- 卓综撰足拽渍壮族追总足拽渍壮族
- 族揍自奏卓捉柞昨谞纂奏卓捉柞昨
- [LeetCode] 非递归中序遍历二叉树 non recursive inorder traversal
- 《c++ primer》第6章 函数 笔记