看来以后用pascal的函数要小心了;

简简单单pos其实时间复杂度是二次方级的……

今天学习的是KMP——字符匹配算法;

这两道题也都很简单,都是为这个算法练手的,

最朴素的匹配显然是穷举起始位置然后看是否匹配,复杂度O(nm)不尽人意

kmp的思想就是尽可能利用之前匹配的信息进行匹配。

具体分析我就不讲了,传送门http://www.cppblog.com/oosky/archive/2006/07/06/9486.html讲的很详细

但据说这两题暴力都可过……

 var a:array[..] of string;
next:array[..] of integer;
f:array[..] of boolean;
s:string;
c:char;
i,j,l,t,p,v,n,w:integer;
procedure work_next(s:string);
var i:integer;
begin
fillchar(next,sizeof(next),);
i:=;
j:=;
next[]:=;
while i<=l do
begin
if (j=) or (s[i]=s[j]) then
begin
inc(i);
inc(j);
next[i]:=j;
end
else j:=next[j];
end;
end;
function compare(a,b:string):boolean;
var i,j,l1:integer;
begin
i:=;
j:=;
l1:=length(a);
while (i<=l1) and (j<=l) do
begin
if (j=) or (a[i]=b[j]) then
begin
inc(i);
inc(j);
end
else j:=next[j];
end;
if j>l then exit(true) else exit(false);
end; procedure kmp;
var j:integer;
begin
for j:= to n do
begin
if (j=v) or f[j] then continue;
if (compare(a[j],s)) then
begin
f[j]:=true;
w:=w+;
end;
end;
end; begin
readln(t);
for p:= to t do
begin
readln(n);
v:=;
for i:= to n do
begin
readln(a[i]);
if (v=) or (length(a[i])<length(a[v])) then v:=i;
end;
for l:=length(a[v]) downto do
begin
for i:= to length(a[v])-l+ do
begin
w:=;
fillchar(f,sizeof(f),false);
s:=copy(a[v],i,l);
work_next(s);
kmp;
for j:= to l div do
begin
c:=s[j];
s[j]:=s[l-j+];
s[l-j+]:=c;
end;
work_next(s);
kmp;
if w=n then break;
end;
if w=n then break;
end;
if w=n then writeln(l) else writeln();
end;
end.

poj1226

poj1226,poj3080的更多相关文章

  1. POJ3080 - Blue Jeans(KMP+二分)

    题目大意 求N个字符串的最长公共字串 题解 和POJ1226做法一样...注意是字典序最小的...WA了一次 代码: #include <iostream> #include <cs ...

  2. POJ-3080 Blue Jeans---字符串+暴力

    题目链接: https://vjudge.net/problem/POJ-3080 题目大意: 找最长的公共字串(长度>=3),长度相同就找字典序最小的 解题思路: 枚举第一个串的所以子串,处理 ...

  3. POJ1226 Substrings ——后缀数组 or 暴力+strstr()函数 最长公共子串

    题目链接:https://vjudge.net/problem/POJ-1226 Substrings Time Limit: 1000MS   Memory Limit: 10000K Total ...

  4. 【POJ1226】Substrings(后缀数组,二分)

    题意: n<=10,len<=100 思路: 只有一个字符串的时候特判一下 #include<cstdio> #include<cstring> #include& ...

  5. POJ3080 Blue Jeans —— 暴力枚举 + KMP / strstr()

    题目链接:https://vjudge.net/problem/POJ-3080 Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total ...

  6. POJ1226:Substrings(后缀数组)

    Description You are given a number of case-sensitive strings of alphabetic characters, find the larg ...

  7. poj3080解题报告(暴力、最大公共子串)

    POJ 3080,题目链接http://poj.org/problem?id=3080 题意: 就是求m个长度为60的字符串的最长连续公共子串,2<=m<=10 规定: 1.最长公共串长度 ...

  8. POJ3080——Blue Jeans(暴力+字符串匹配)

    Blue Jeans DescriptionThe Genographic Project is a research partnership between IBM and The National ...

  9. POJ1226 - Substrings(KMP+二分)

    题目大意 给定n个字符串,字符串可逆序可顺序,求它们的最长公共子串 题解 在输入的过程中记录一下最短的那个字符串,然后枚举起点,然后进行二分求出子串末位置,然后再验证是否是公共子串,记录最长的公共子串 ...

随机推荐

  1. 几种placeholder替换项目参数的方法比较

    引言:(引自:http://openwebx.org/docs/autoconfig.html) 在一个应用中,我们总是会遇到一些参数,例如: 数据库服务器IP地址.端口.用户名: 用来保存上传资料的 ...

  2. javascript获取ckeditor编辑器的值(实现代码)

    CKeditor编辑器是FCKeditor的升级版本想对于FCK来说,确实比较好用,加载速度也比较快以下是如果通过JS获取CKeditor编辑器的值,用于表单验证 if(CKEDITOR.instan ...

  3. 由于Linux操作平台屡次受到黑客的“青睐”,LINUX公司也越来越注重产品的安全问题。

    Guardian Digital公司和安全管理服务提供商(MSSP)Guardent公司推出的新产品将提高开放式源代码和Linux产品的安全性能. Guardian Digital公司将于本月底在纽约 ...

  4. Xen学习——原理要点归纳总结

    Xen是半虚拟化,需要修改操作系统内核.Vmware是完全虚拟化. XEN的系统架构: Xen Hypervisor: 直接运行在硬件上,介于操作系统和硬件之间的一层软件,负责管理CPU.内存.中断. ...

  5. EXTJS 4.2 资料 控件之tabpanel 静态生成tabpanel

    //**************页面主体开始***************** var tabpanel = Ext.createWidget('tabpanel', { activeTab: 0, ...

  6. poj 2262 Goldbach's Conjecture(素数筛选法)

    http://poj.org/problem?id=2262 Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total ...

  7. 自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选&多选下拉框

    先说点闲话,熟悉Angular的猿们会喜欢这个插件的. 00.本末倒置 不得不承认我是一个喜欢本末倒置的人,学生时代就喜欢先把晚交的作业先做,留着马上就要交的作业不做,然后慢悠悠做完不重要的作业,卧槽 ...

  8. 1206: [HNOI2005]虚拟内存 - BZOJ

    Description 操作系统中一种重要的存储管理技术就是虚拟内存技术.操作系统中允许进程同时运行,也就是并行.每个进程都有其相对独立的数据块(进程运行的过程中将对其进行读写操作).理想的情况下,这 ...

  9. Does not contain a valid host:port authority: Master:8031 (configuration property 'yarn.resourcemanager.resource-tracker.address')

    问题解决: 这个错误是:yarn里面的配置的格式有错误:如: <property> <name>yarn.resourcemanager.address</name> ...

  10. js页面刷新一次

    // var str = document.location.hash, // index = str.indexOf("#"); // if(index == 0){ // wi ...