矩阵匹配 AC自动机 或 二维Hash UVa 11019 - Matrix Matcher

该博客探讨了如何解决UVa 11019 - Matrix Matcher问题,通过将矩阵P的每一行构建AC自动机,然后在矩阵T中进行逐行匹配。博主提出,在匹配过程中记录每个位置的匹配次数,最终找出所有与P完全匹配的矩形区域。文章还提到了二维Hash作为另一种解决方案,并指出在处理相同模式串时需要链表辅助处理。
摘要由CSDN通过智能技术生成

题意:给出一个n*m的字符矩阵T,你的任务是找出给定的x*y的字符矩阵P在T中出现了多少次.

分析:要想整个矩阵匹配,至少各行都得匹配。所以先把P的每行看做一个模式串构造出AC自动机,然后在T中的各行逐一匹配,找到P中每一行的所有匹配点。

只要在匹配时做一些附加操作,就可以把匹配出来的单一的行拼成矩形。用一个count[r][c]表示T中一(r,c)为右上角,与P等大的矩形中有多少个完整的行和P对应位置的行完全相同.当P的第i行出现在T的第r行,起始列编号为c时,意味着count[r-i][c]应当加1.所有匹配结束后,count[r][c]=X的那些就是一个二维匹配点.

注意:模式串有可能相同,因此需要一个链表来相同的模式串.


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值