描述

通配符是一类键盘字符,当我们不知道真正字符或者不想键入完整名字时,常常使用通配符代替一个或多个真正字符。通配符有问号(?)和星号(*)等,其中,“?”可以代替一个字符,而“*”可以代替零个或多个字符。

你的任务是,给出一个带有通配符的字符串和一个不带通配符的字符串,判断他们是否能够匹配。

例如,1?456 可以匹配 12456、13456、1a456,但是却不能够匹配23456、1aa456; 
2*77?8可以匹配 24457798、237708、27798。

输入输入有两行,每行为一个不超过20个字符的字符串,第一行带通配符,第二行不带通配符输出如果两者可以匹配,就输出“matched”,否则输出“not matched”样例输入

1*456?
11111114567

样例输出

matched

做这个题,一定要反复慎重考虑边界问题

首先,星号可以表示什么都没有,所以B串的递推要从0开始

如果遇到星号,就逆着B串匹配的位置往前找,如果星号之前A串能与B串的某一位置匹配那么他就能匹配,还要注意到0的问题,因为星号之前可能全是星号

如果不是,就看此位置和上个位置是否都匹配,注意这个时候B串的位置必须大于0

这样就可以过了

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
char a[],b[];
int dp[][];
int main(){ scanf("%s%s",a,b);
int lena = strlen(a),lenb = strlen(b);
int pta = ,ptb = ;
dp[][] = ;
for(int i = ;i <= lena;i++){
for(int j = ;j <= lenb;j++){
if(a[i-] == '*'){
for(int k = j;k >= ;k--){
if(dp[i-][k]){
dp[i][j] = ;
break;
}
}
}else if((a[i-] == b[j-] || a[i-] == '?') && (j&&dp[i-][j-])){
dp[i][j] = ;
}
}
}
if(dp[lena][lenb]) cout<<"matched";
else cout<<"not matched";
return ;
}

openjudge6252 带通配符的字符串匹配的更多相关文章

  1. COJN 0558 800600带通配符的字符串匹配

    800600带通配符的字符串匹配 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 通配符是一类键盘字符,当我们不知道真正字符或者 ...

  2. 【noi 2.6_6252】带通配符的字符串匹配(DP)

    题意:给出一个带有通配符("?"可以代替一个字符,"*"可以代替零个或多个字符)的a字符串和一个不带通配符的b字符串,判断他们是否能够匹配. 解法:f[i][j ...

  3. 带 like 的字符串匹配查询

    1.百分号通配符  '%'  ,匹配任意长度的字符,甚至包括零字符 例:查询所有以  'a'  字母开头的水果,sql 语句如下 select f_id,f_name from fruits wher ...

  4. 【python cookbook】【字符串与文本】3.利用shell通配符做字符串匹配

    问题:当工作在Linux shell下时,使用常见的通配符模式(即,*.py.Dat[0-9]*.csv等)来对文本做匹配 解决方案:fnmatch模块提供的两个函数fnmatch().fnmatch ...

  5. HDU 5716 带可选字符的多字符串匹配(ShiftAnd)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5716 [题目大意] 给出一个字符串,找出其中所有的符合特定模式的子串位置,符合特定模式是指,该子串 ...

  6. [51nod1532]带可选字符的多字符串匹配

    有一个文本串,它的长度为m (1 <= m <= 2000000),现在想找出其中所有的符合特定模式的子串位置. 符合特定模式是指,该子串的长度为n (1 <= n <= 50 ...

  7. FFT字符串匹配

    本文半原创 参考资料:其实就是照抄的什么参考啊 我们知道KMP可以用来在线性复杂度内进行制胡窜匹配 今天教您一种新方法:用FFT进行字符串匹配 您可能觉得这很玄学,FFT不是做多项式卷积的吗,怎么还可 ...

  8. CF528D Fuzzy Search 字符串匹配+FFT

    题意: DNA序列,在母串s中匹配模式串t,对于s中每个位置i,只要s[i-k]到s[i+k]中有c就认为匹配了c.求有多少个位置匹配了t. 分析: 这个字符串匹配的方式,什么kmp,各种自动机都不灵 ...

  9. zstu.4194: 字符串匹配(kmp入门题&& 心得)

    4194: 字符串匹配 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 206  Solved: 78 Description 给你两个字符串A,B,请 ...

随机推荐

  1. 乐视max2 刷入第三方recovery 然后刷入root 包 root

    乐视max2 刷入第三方recovery 然后刷入root 包 root 第三方recovery:为奇兔 刷入root 包 https://share.weiyun.com/ddcdd5ea83956 ...

  2. iTOP-4412开发板-实战教程-ssh服务器移植到arm开发板

    本文转自迅为开发板:http://www.topeetboard.com 在前面实战教程中,移植了“串口文件传输工具”,整个移植过程是比较简单的,而且我 们没有做任何协议方面的了解,只是“配置”+“编 ...

  3. (转)淘淘商城系列——SSM框架整合之表现层整合

    http://blog.csdn.net/yerenyuan_pku/article/details/72721120 上文我们一起学习了Service层的整合,本文将教大家如何整合表现层. 我们在t ...

  4. Relational Algebra 关系代数

    Relational Algebra Relational Algebra is the mathematical basis for the query language SQL Introduct ...

  5. swift class type isa-swizzling

    class 是引用类型,生成的实例分布在 Heap(堆) 内存区域上,在 Stack(栈)只存放着一个指向堆中实例的指针.因为考虑到引用类型的动态性和 ARC 的原因,class 类型实例需要有一块单 ...

  6. 【原创】DESTOON做中英双语言(多语言)切换版本具体详解

    第一次发原创好激动,该注意点什么? 在开发过程中用户有许多要求,比如这个多语言切换就是一个需求. 首先讲解一下DESTOON(DT)后台系统如何做这个中英.甚至多语言切换的这个功能. DT本身不自带多 ...

  7. 使用cmd查看Tensorboard的生成图

    代码中"graph_practice7/"文件存放的是生成的神经网络图 现在要查看这个图,使用cmd 进入文件指定目录(我的文件存储地址是E:\workspace\PycharmP ...

  8. Spring全局异常捕获

    package org.xxx.ac.zpk.exception; import java.io.IOException; import javax.servlet.http.HttpServletR ...

  9. 原生 js 上传图片

    js <!doctype html> <html> <head> <meta charset="utf-8"> <title& ...

  10. 第2节 hive基本操作:11、hive当中的分桶表以及修改表删除表数据加载数据导出等

    分桶表 将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去 开启hive的桶表功能 set hive.enforce.bucketing= ...