[openjudge]带通配符的字符串匹配(dp)
来源:互联网 发布:js面向对象编程案例 编辑:程序博客网 时间:2024/05/16 08:31
题目描述
传送门
题解
感觉这道题刚开始令我迷惑的是一个*可能匹配多个字符,这样的话看起来没法搞啊。
实际上不用想那么多。只需要考虑从哪里转移就可以了。
f(i,j)表示第一个串的前i个字符能否匹配第二个串的前j个字符。那么可以进行分类讨论:
①如果s1[i]=’?’或者s1[i]=s2[j]的话,f(i,j)可以从f(i-1,j-1)转移过来。
②如果s1[i]=
代码
#include<iostream>#include<cstring>#include<cstdio>using namespace std;char s1[1005],s2[1005];int l1,l2,f[1005][1005];int main(){ gets(s1);l1=strlen(s1); gets(s2);l2=strlen(s2); for (int i=l1;i>=1;--i) s1[i]=s1[i-1]; for (int i=l2;i>=1;--i) s2[i]=s2[i-1]; for (int i=1;i<=l1;++i) if (s1[i]=='*') f[i][0]=true; else break; f[0][0]=true; for (int i=1;i<=l1;++i) for (int j=1;j<=l2;++j) { if (s1[i]=='?'||s1[i]==s2[j]) f[i][j]|=f[i-1][j-1]; else if (s1[i]=='*') f[i][j]|=f[i-1][i-1]|f[i-1][j]|f[i][j-1]; } if (f[l1][l2]) puts("matched"); else puts("not matched");}
0 0
- [openjudge]带通配符的字符串匹配(dp)
- OpenJudge 6252 带通配符的字符串匹配
- 【Openjudge】带通配符的字符串匹配(递归)
- OPENJUDGE NOI 6252 带通配符的字符串匹配
- 【Noi OpenJudge】 带通配符的字符串匹配 解题报告
- openjudge 6256 带通配符的字符串匹配(动态规划)
- 带通配符*的字符串匹配
- 带通配符的字符串匹配
- 带通配符的字符串匹配
- 带通配符的字符串匹配问题
- openjudge6252 带通配符的字符串匹配
- 带通配符的字符串匹配:动态规划
- 字符串转换成整数/带通配符的字符串匹配
- 字符串转换成整数&带通配符的字符串匹配问题
- 字符串转换成整数,带通配符的字符串匹配
- C语言实现的带通配符的字符串匹配
- 带通配符的字符串匹配问题的动态规划算法
- 第2章 带通配符的字符串匹配问题
- MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
- 2017今年CSDN博客排名
- Java实现单例模式之饿汉式、懒汉式、枚举式,带测试。
- 113. Path Sum II
- 安卓基础之内存读写(数据访问)
- [openjudge]带通配符的字符串匹配(dp)
- Android动画效果总结(一)
- “程序员节” 说说“信息在计算机中的表示方法”
- Linux 运行shell脚本
- 函数参数顺序点
- 析构函数
- 选择 Parquet for Spark SQL 的 5 大原因
- Git 时间,版本控制工具进阶
- Android 5 之widget及其广播