题意:

给你两个字符串:第一个字符串只包含小写大写字母

第二个字符串除了字母之外,还有'.'和'*',其中'.'可以当成任意一个字符,'*'表示前面那个字符可以重复若干次

当然也可以重复0次,例如a.*A可以是aaaA,可以是abbbbA等等,也可以是aA

问两个串能不能匹配(即第二个字符串某种情况下和第一个字符串一模一样)

因为长度只有2500,很好想到DP,dp[x][y]表示第二个字符串长度为x,第一个字符串长度为y能否完美匹配(1or0)

但是要注意的细节特别多,具体看代码

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n, m, dp[2505][2505];
char str[2505], jud[2505];
int main(void)
{int T, i, j;scanf("%d", &T);while(T--){scanf("%s%s", str+1, jud+1);memset(dp, 0, sizeof(dp));n = strlen(str+1);m = strlen(jud+1);dp[0][0] = 1;for(i=1;i<=m;i++){if(jud[i]=='*' && i==2)dp[i][0] = 1;for(j=1;j<=n;j++){if(jud[i]=='.')dp[i][j] = dp[i-1][j-1];else if(jud[i]!='*'){if(jud[i]==str[j])dp[i][j] = dp[i-1][j-1];}else{dp[i][j] = max(dp[i-2][j], dp[i-1][j]);if((dp[i-1][j-1]==1 || (dp[i][j-1]==1)) && str[j]==str[j-1] && (str[j]==jud[i-1] || jud[i-1]=='.'))dp[i][j] = max(dp[i][j], max(dp[i][j-1], dp[i-1][j-1]));}}}if(dp[m][n]==1)printf("yes\n");elseprintf("no\n");}return 0;
}

HDU 6170 2017 多校训练:Two strings(DP)相关推荐

  1. HDU 6134 2017 多校训练:Battlestation Operational(莫比乌斯反演+积性函数)

    实在太长了直接放题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6134 这题就是求 考虑当Gcd(i, j)==1时,除了j为1的情况,其它时候i/j一 ...

  2. HDU 6180 2017 多校训练:Schedule

    题意: 和 51nod 1428 活动安排问题 一模一样,只不过还要求一个时间和 http://blog.csdn.net/jaihk662/article/details/77489061 如何求出 ...

  3. HDU 6178 2017 多校训练:Monkeys(DFS)

    题意: 有一棵n个节点的树,树上有k只猴子,这k只猴子所在位置可任意指定,但是每个点上最多只能有一只猴子,现在你要切掉尽可能多的边,但必须保证没有任何一只猴子被完全孤立,求最少得保留多少条边 题目还好 ...

  4. HDU 6166 2017 多校训练:Senior Pan(最短路)

    题意: 有一张n个点m条边的有向图,还有一个包含k个点的点集,求出这个点集中任意两点间最短路的最小值 官方题解看不懂.. 如果一条边的两个端点都在这个集合中,就将这条边直接删掉(中间记录下最小值)以后 ...

  5. HDU 6162 2017 多校训练:Ch's gift(树链剖分)

    题意: 有一棵n个节点的树,m次查询,每次查询x, y, a, b表示节点x到y的路径上所有在[a, b]范围内的权值和 树链剖分+线段树 询问离线,按a和b分别排序求出所有小于a和所有小于b+1的权 ...

  6. 2017 多校训练第二场 HDU 6047 Maximum Sequence(贪心+优先队列)

    Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. (2017多校训练第四场)HDU - 6078 Wavel Sequence dp

    传送门:点击打开链接 定义状态dp[i][j][0]表示以a[i],b[j]结尾的且为波谷的情况总和,dp[i][j][1] 为波峰. 对于某个i,j满足a[i] == b[j],则dp[i][j][ ...

  8. (2017多校训练第一场)HDU - 6034 Balala Power! 贪心

    很容易就想到把每个字母的权重都算出来,然后把权重最大的赋值成25,次大的赋值成24......以此类推. 但是字符串长度最大为100000,也就是说一个字母的权重最大是26^100000次方左右,太大 ...

  9. 2021牛客多校5 - Double Strings(dp+组合数学)

    题目链接:点击查看 题目大意:给出两个字符串 sss 和 ttt,要求 "一段相同的前缀" + "一个不同的字符(满足s[i]<t[j])"+ " ...

最新文章

  1. Android Input系统之触摸屏
  2. 59.加载Viewcontroller的几种方法(添加导航,解决xib里面空间不显示问题)
  3. 差分约束系统【模板】
  4. bios模拟器_比游戏模拟器罕见一百倍!99%的人没见过!真实用!
  5. python中可选参数的特征_sklearn特征选择方法及参数
  6. 有道云笔记里几种我觉得比较有用的操作
  7. do…while 第二讲
  8. 计算机院校考研非歧视,2021考研昌吉学院学科教学(语文)045103调剂信息
  9. 1. ansible-playbook 变量定义与引用
  10. 新建samba配置步骤
  11. 示波器的使用和李萨如图形
  12. 国家二级计算机考试题库操作题素材,【2018-2019】计算机excel操作题题库,带素材-范文word版 (17页)...
  13. matlab圆孔孔壁应力集中,平板中心圆孔边应力集中的有限元分析
  14. 计算机英语论文摘要,★计算机英语论文摘要范文计算机英语论文摘要写(9页)-原创力文档...
  15. Matlab获取线粒体序列及核苷酸初步分析
  16. The repository 'http://ppa.launchpad.net/octave/stable/ubuntu bionic Release' does not have a Releas
  17. Ubuntu下装codeblocks
  18. 52数学能力测评历年真题及答案(五年级)
  19. 最新弹幕播放器源码/支持对接苹果+蓝光接口API
  20. 注册ArcGIS Online账号||免费使用21天(保姆级)

热门文章

  1. python下载哪个版本好-python下载哪个版本好
  2. python的第三方库是干什么用的-python标准库和第三方库的区别
  3. python手机版下载-QPython下载
  4. java后端面试经验(自用收藏)
  5. 孕期服务器声音影响,噪音多少分贝影响胎儿听力
  6. python分数类_利用标准库fractions模块让Python支持分数类型的方法详解
  7. window10设置文件夹备注
  8. java斗地主随机发牌_使用Java实现斗地主游戏的发牌过程
  9. 【计算机网络笔记】数据链路层:点对点协议PPP
  10. 【Spring笔记】Spring配置