POJ2185 最小覆盖矩阵 (二维KMP)
来源:互联网 发布:pm2.5数据接口 编辑:程序博客网 时间:2024/06/14 17:24
这题挺有意思的,主要把KMP理解透彻了,其实二维的可以看成一维的,原来是由单个字符组成的字符串,现在就是由字符串组成的字符串数组,在此基础上,其他操作和思想都是一样的,横向求一遍next数组,那么最小的可覆盖的子串长度为:len-next[len],同理再求一遍纵向的,相乘即可。
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;#define maxn 10005int nxt[maxn];char s[maxn][maxn],str[77][maxn],ss[maxn];int getnext(int len,char p[][maxn]){ int i,j; nxt[0]=nxt[1]=0; for(i=1;i<len;i++) { j=nxt[i]; while(j&&strcmp(p[i],p[j])) j=nxt[j]; nxt[i+1]=(!strcmp(p[i],p[j])?j+1:0); } return len-nxt[len];}int main(){ int c,r,i,j; scanf("%d%d",&r,&c); for(i=0;i<r;i++) scanf("%s",s[i]); for(i=0;i<c;i++) for(j=0;j<r;j++) str[i][j]=s[j][i];//把列转为行 int w=getnext(r,s);//宽 int h=getnext(c,str);//长 // cout<<w<<' '<<h<<endl; printf("%d\n",w*h); return 0;}
阅读全文
0 0
- POJ2185 最小覆盖矩阵 (二维KMP)
- POJ2185 Milking Grid 最小覆盖子矩阵(二维KMP)
- poj2185 Milking Grid(二维KMP+最小覆盖矩阵)
- poj2185(二维最小覆盖子串问题-KMP)
- POJ2185 最小覆盖矩阵
- POJ2185--KMP最小覆盖串
- poj2185 KMP+欧几里得 求最小的覆盖
- POJ2185(最小覆盖子矩阵) #by nobody
- poj2185 Milking Grid (最小覆盖矩阵)
- poj 2185 Milking Grid(最小矩阵覆盖,二维 kmp 匹配)
- KMP矩阵匹配poj2185
- Milking Grid (二维KMP+矩阵覆盖)
- poj2185 Milking Grid 二维kmp
- KMP求最小覆盖子矩阵
- KMP+poj2185
- POJ 2185 Milking Grid(最小覆盖子矩阵面积KMP)
- POJ2185_Milking Grid_KMP_二维求最小覆盖子矩阵
- poj2185 Milking Grid(KMP运用)
- 文件上传与拦截器
- UVA
- 记录下使用Ambari部署HDP集群的过程
- 洛谷 P2827 蚯蚓
- 嵌入式面试全攻略,记我的一次校招
- POJ2185 最小覆盖矩阵 (二维KMP)
- BZOJ 3295 [Cqoi2011]动态逆序对
- 51 nod 算法马拉松28 先序遍历与后序遍历
- C++类与对象学习
- 数字游戏---巧妙解答
- 文章标题 如何从网上获取图片
- 【Android笔记-异常-1】
- unicode 编码介绍
- 个人/家庭/社会