poj2185 Milking Grid(两次KMP)
来源:互联网 发布:淘宝nike鸳鸯球鞋 编辑:程序博客网 时间:2024/05/21 21:44
题目链接:http://poj.org/problem?id=2185
题目大意:在字符矩阵中找出一个最小子矩阵,使其多次复制所得的矩阵包含原矩阵。
思路:
做两次KMP,分别为一次行一次列。
行和列分别是len-next[len];
最后两个结果相乘就可以了
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;char str[10010][100];int r,c;const int maxn=10010;int nexts[maxn];bool same1(int i,int j)//判断第i行和第j行是否相等{for(int k=0;k<c;k++)if(str[i][k]!=str[j][k])return false;return true;}bool same2(int i,int j)//判断第i列和第j列是否相等{for(int k=0;k<r;k++)if(str[k][i]!=str[k][j])return false;return true;}int main(){while(~scanf("%d%d",&r,&c)){for(int i=0;i<r;i++){scanf("%s",str[i]);}int i,j;j=nexts[0]=-1;i=0;while(i<r)//行的kmp{if(j==-1||same1(i,j)){i++,j++;nexts[i]=j;}elsej=nexts[j];}int ans1=r-nexts[r];j=nexts[0]=-1;i=0;while(i<c){if(j==-1||same2(i,j)){i++,j++;nexts[i]=j;}elsej=nexts[j];}int ans2=c-nexts[c];printf("%d\n",ans1*ans2);}}
阅读全文
0 0
- poj2185 Milking Grid(两次KMP)
- POJ2185 Milking Grid【KMP】
- POJ2185 Milking Grid(kmp)
- poj2185 Milking Grid(KMP运用)
- poj2185 Milking Grid 二维kmp
- POJ2185-Milking Grid(KMP,next数组的应用)
- POJ2185 Milking Grid 最小覆盖子矩阵(二维KMP)
- poj2185 Milking Grid
- poj2185 Milking Grid
- POJ2185 Milking Grid
- 【poj2185】Milking Grid
- POJ2185 Milking Grid
- poj2185 Milking Grid(二维KMP+最小覆盖矩阵)
- poj2185 Milking Grid (最小覆盖矩阵)
- Milking Grid (二维KMP+矩阵覆盖)
- 【POJ】2185 Milking Grid(KMP)
- POJ 2185 Milking Grid(KMP)
- POJ 2185 Milking Grid(KMP)
- 控制浏览器滚动条不成功的解决方法
- 使用DHT11制作一个Arduino温度数据记录仪
- GoogleCamera代码流程分析之相机切换
- json在项目中的应用大总结
- vue2.0购物车和地址选配实例,附演示地址
- poj2185 Milking Grid(两次KMP)
- muyou -- 线程
- runtime error program:c:\windows\explorer.exe (安装win8安全更新补丁后出现) 为什么?
- linux中的SUID和SBIT 权限
- 单调队列——Feel Good(良好的感觉)
- 快速幂与快速矩阵幂(以大数下的斐波那契数列为例)
- centos7.1 QT5编译出现:cannot find -lGL 和 collect2:error:ld returned 1 exit status 错误
- 什么情况下会导致内存泄露
- 高级特性