hihoCoder 1110 正则表达式 (区间dp)
来源:互联网 发布:数据安全与编程技术 编辑:程序博客网 时间:2024/06/04 19:14
题意:
根据题目要求判断输入的串是否是正则表达式
给定一个字符串,判断其是否为合法的正则表达式。
一个正则表达式定义为:
1:0是正则表达式,1也是正则表达式。
2:P和Q都是正则表达式,则PQ是正则表达式。
3:P是正则表达式,则(P)是正则表达式
4:P是正则表达式,则P*也是正则表达式
5:P和Q都是正则表达式,则P|Q是正则表达式。
题解:
dp[i][j]表示ij区间是否是正则表达式。接着就是根据题目要求dp就好了。
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<queue>#include<map>#include<set>#define B(x) (1<<(x))using namespace std;typedef long long ll;void cmax(int& a,int b){ if(b>a)a=b; }void cmin(int& a,int b){ if(b<a)a=b; }void cmax(ll& a,ll b){ if(b>a)a=b; }void cmin(ll& a,ll b){ if(b<a)a=b; }void add(int& a,int b,int mod){ a=(a+b)%mod; }void add(ll& a,ll b,ll mod){ a=(a+b)%mod; }const int oo=0x3f3f3f3f;const ll OO=0x3f3f3f3f3f3f3f3f;const ll MOD=1000000007;const int maxn=105;bool dp[maxn][maxn];char str[maxn];int main(){ //freopen("E:\\read.txt","r",stdin); while(scanf("%s",str+1)!=EOF){ int n=strlen(str+1); memset(dp,false,sizeof dp); for(int i=1;i<=n;i++){ if(str[i]=='0'||str[i]=='1') dp[i][i]=true; } for(int L=2;L<=n;L++){ for(int i=1;i+L-1<=n;i++){ int j=i+L-1; if(dp[i+1][j-1]&&str[i]=='('&&str[j]==')') dp[i][j]=true; if(dp[i][j-1]&&str[j]=='*') dp[i][j]=true; if(dp[i][j])continue; for(int k=i;k<j;k++){ if(dp[i][k]&&dp[k+1][j]) dp[i][j]=true; if(dp[i][k]&&dp[k+2][j]&&str[k+1]=='|') dp[i][j]=true; if(dp[i][j])break; } } } if(dp[1][n]) printf("yes\n"); else printf("no\n"); } return 0;}
0 0
- hihoCoder 1110 正则表达式 (区间dp)
- hihocoder 1110 正则表达式 (区间dp)
- hihoCoder--1110 正则表达式(区间dp)
- hihocoder #1110 : 正则表达 区间dp
- hihoCoder挑战赛7 1001 正则表达式 (区间DP)
- hihocoder #1110 正则表达式
- hihocoder 1110 正则表达式
- hihocoder 1110 正则表达式
- hihoCoder 1110 : 正则表达式
- hihoCoder之正则表达式
- hihocoder A Game 区间dp
- hihoCoder挑战赛7 正则表达式
- hihoCoder 1149 回文字符序列 (区间dp)
- hihocoder 1149 : 回文字符序列(区间dp)
- hihocoder 1636 : Pangu and Stones(区间dp)
- 区间DP 表达式
- 正则表达式汉字区间
- 正则表达式 方括号表达式 区间表达式
- hibernate-悲观锁与乐观锁
- Android动画效果translate、scale、alpha、rotate详解
- ActionBar 顶栏 右边实现自定义图标点击效果
- 【转】Spring与我的经验过程
- 删除右键菜单中的Git
- hihoCoder 1110 正则表达式 (区间dp)
- ibatis的多参数查询
- linux下安装boost
- 最大子序列求和问题
- 谈强迫症和学习
- 使用ucontext组件实现的coroutine代码分析
- codeforge
- csdn的用户规则
- 【AJAX好学易用系列】之三:请求与响应