POJ 2955 Brackets 区间DP 入门
2024-10-07 04:06:30
dp[i][j]代表i->j区间内最多的合法括号数
if(s[i]=='('&&s[j]==')'||s[i]=='['&&s[j]==']')
dp[i][j]=dp[i+1][j-1]+2;
dp[i][j]=max{dp[i][k]+dp[k+1][j]};
注意要对于区间的最值合并
ac代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int check(char a,char b)
{
if(a=='('&&b==')')
return 1;
if(a=='['&&b==']')
return 1;
return 0;
}
int main()
{
char str[111];
int dp[111][111],i,j,k,len;
while(scanf("%s",str)!=EOF)
{
if(!strcmp(str,"end"))
break;
len=strlen(str);
memset(dp,00,sizeof(dp));
for(k=1;i<len;k++) ////表示区间长度,从0-len更新
{
for(i=0,j=k;j<len;i++,j++)
{
if(check(str[i],str[j]))
dp[i][j]=dp[i+1][j-1]+2;
for(int x=i;x<j;x++) // //区间最值合并
{
dp[i][j]=max(dp[i][j],dp[i][x]+dp[x][j]);
}
}
}
printf("%d\n",dp[0][len-1]);
}
return 0;
}
最新文章
- 基于Autofac, Castle.DynamicProxy的动态WCF解决方案(原创)
- T4模版基础例子
- Python3 windows如何安装模块 setuptools
- 修改myeclipse的servlet模板
- Exercise: Rot13 Reader
- libpng causes error concerning pngconf.h
- Manager(管理器)
- osprofiler在openstack Cinder里的使用
- CoreCLR源码探索(六) NullReferenceException是如何发生的
- [HNOI 2009]最小圈
- Docker学习笔记2: Docker 概述
- 小程序组件中有bindinput监听报异常
- babel (二) update to v7
- Beautiful Soup 学习手册
- 利用mycat实现基于mysql5.5主从复制的读写分离
- Django 模版过滤器
- 【WEB前端系列之CSS】CSS3动画之Tranition
- django和flask的区别
- python之函数用法__getitem__()
- 访问IO设备