题目大意:给定一个n*m的矩阵t,在给定一个x*y的字符矩阵P,现在问在t中能够找到多少个这样的矩阵使得和P相同。
此题解法比较易懂。设cnt[r][j]表示以(r,i)为矩阵的左上角的矩阵与P对应相同的行数有多少个,这样cnt==x的就是满足题意个一个矩阵。
所以就可以利用ac自动机来做了。以p的每一行来建立自动机。
注意此题的一个陷阱:就是p的一些行可能是一样的,这样话在ac自动机里就得记录单词节点表示的是哪些行,不是某一个行。
//
// main.cpp
// uva 11019 - Matrix Matcher
//
// Created by XD on 15/8/31.
// Copyright (c) 2015年 XD. All rights reserved.
//
//此题足见算法之巧妙
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include