poj 2955 Brackets(区间dp)
2017-07-23 14:40
495 查看
题目链接:poj2955
题目大意:给出一个字符串,进行括号的匹配。 (和),[和],两对括号,问一个字符串中最对有几个括号是互相匹配的
思路:简单的区间dp问题 o(n^3)的复杂的
第一层循环枚举区间的长度,第二层循环是这个区间的起始点,第三个循环是这个区间的内的间断点。
#include<iostream>
#include<iostream>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<cstdio>
using namespace std;
#define maxn 200
char s[maxn];
int dp[maxn][maxn];
int getmatch(int i,int j)
{
if((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']'))return 2;
else return 0;
}
void solve(int len)
{
memset(dp,0,sizeof dp);
for(int i=0;i<len-1;i++)
dp[i][i+1]=getmatch(i,i+1);
for(int d=2;d<len;d++)
{
for(int i=0,j;(j=i+d)<len;i++)
{
dp[i][j]=dp[i+1][j-1]+getmatch(i,j);
for(int k=i;k<j;k++)
{
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);
}
}
}
}
int main()
{
while(~scanf("%s",s))
{
if(s[0]=='e')break;
int len=strlen(s);
solve(len);
printf("%d\n",dp[0][len-1]);
}
return 0;
}
题目大意:给出一个字符串,进行括号的匹配。 (和),[和],两对括号,问一个字符串中最对有几个括号是互相匹配的
思路:简单的区间dp问题 o(n^3)的复杂的
第一层循环枚举区间的长度,第二层循环是这个区间的起始点,第三个循环是这个区间的内的间断点。
#include<iostream>
#include<iostream>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<cstdio>
using namespace std;
#define maxn 200
char s[maxn];
int dp[maxn][maxn];
int getmatch(int i,int j)
{
if((s[i]=='('&&s[j]==')')||(s[i]=='['&&s[j]==']'))return 2;
else return 0;
}
void solve(int len)
{
memset(dp,0,sizeof dp);
for(int i=0;i<len-1;i++)
dp[i][i+1]=getmatch(i,i+1);
for(int d=2;d<len;d++)
{
for(int i=0,j;(j=i+d)<len;i++)
{
dp[i][j]=dp[i+1][j-1]+getmatch(i,j);
for(int k=i;k<j;k++)
{
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);
}
}
}
}
int main()
{
while(~scanf("%s",s))
{
if(s[0]=='e')break;
int len=strlen(s);
solve(len);
printf("%d\n",dp[0][len-1]);
}
return 0;
}
相关文章推荐
- poj 2955 Brackets(区间DP)
- poj2955 Brackets 区间dp
- POJ 2955 Brackets(区间dp)
- POJ 2955 Brackets (区间DP,常规)
- POJ 2955 Brackets (区间DP)
- poj 2955 Brackets(区间DP)
- poj 2955 Brackets(区间DP)
- POJ 2955 Brackets(区间DP)
- poj 2955 Brackets(区间dp)
- POJ 2955 Brackets——区间dp
- POJ 2955:Brackets(区间DP)
- poj 2955 Brackets 【区间dp 入门】
- POJ 2955 Brackets --最大括号匹配,区间DP经典题
- POJ 2955 Brackets (区间DP)
- poj 2955 Brackets(区间DP)
- POJ 2955 Brackets【区间DP】
- 【DP】 POJ 2955 Brackets 区间DP
- poj 2955 Brackets(区间DP)
- POJ 2955 Brackets (区间DP)
- POJ 2955 Brackets 区间DP