poj 2752

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const int max_=4e5+;
char str[max_];
int ans[max_],nex[max_];
int tot;
void getnext(int n)
{
int i=,k=-;
nex[]=-;
while(i<n)
{
while(k>-&&str[k]!=str[i])
k=nex[k];
nex[++i]=++k;
}
}
void solve(int n)
{
int i=n;
tot=;
while(i>-)
{
if(str[i-]==str[n-])
ans[++tot]=i;
i=nex[i];
}
}
int main()
{
while(gets(str))
{
int len=strlen(str);
getnext(len);
solve(len);
for(int i=tot;i>=;i--)
{
printf("%d ",ans[i]);
}
printf("\n");
}
}

poj 3080

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
using namespace std;
const int N=+,max_=+;
string s[N];
int nex[max_];
void getnext(string str)
{
int n=str.size();
int i=,k=-;
nex[i]=k;
while(i<n)
{
while(k>-&&str[i]!=str[k])
k=nex[k];
nex[++i]=++k;
}
}
bool kmp(string str,string mo)
{
int n=str.size(),m=mo.size();
int i=,j=;
while(i<n&&j<m)
{
while(str[i]!=mo[j]&&j>-)
j=nex[j];
i++,j++;
}
if(j==m)
return ;
return ;
}
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=;i<n;i++)
cin>>s[i];
string ans="";
for(int j=;j<=s[].size();j++)
{
for(int i=;i+j<=s[].size();i++)
{
bool flag=;
string op=s[].substr(i,j);
getnext(op);
for(int ii=;ii<n;ii++)
{
if(kmp(s[ii],op)==)
{
flag=;
break;
}
}
if(!flag)
{
if(ans.size()<op.size())
ans=op;
else if(ans.size()==op.size())
ans=min(ans,op);
}
}
}
if(ans.size()>=)
cout<<ans<<endl;
else
cout<<"no significant commonalities"<<endl;
}
}

hdu   2594

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
const int max_=5e5+;
using namespace std;
char str[max_],mo[max_];
int nex[max_];
void getnext(int n)
{
int i=,k=-;
nex[i]=-;
while(i<n)
{
while(str[i]!=str[k]&&k>-)
k=nex[k];
nex[++i]=++k;
}
}
void solve(int n,int m)
{
int i=,j=;
while(j<m)
{
while(str[i]!=mo[j]&&i>-)
i=nex[i];
i++,j++;
// printf("%d\n",j);
}
if(i<=)
printf("0\n");
else
{
for(int ii=;ii<i;ii++)
printf("%c",str[ii]);
printf(" %d\n",i);
}
}
int main()
{
while(scanf("%s %s",str,mo)!=EOF)
{
// cout<<str<<endl<<mo<<endl;
int n=strlen(str);
int m=strlen(mo);
getnext(n);
solve(n,m);
}
}

最新文章

  1. 责任链模式/chain of responsibility/行为型模式
  2. 解释序列号关键字的形象说法[Serializable]
  3. Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)
  4. nginx学习
  5. Python3基础 print 自带换行功能
  6. 对于python,一切事物都是对象,对象基于类创建
  7. Python基础教程【读书笔记】 - 2016/6/26
  8. Web前端的35个jQuery小技巧
  9. DOM 之通俗易懂讲解
  10. Android实战简易教程-第九枪(BitmapFactory.Options对资源图片进行缩放)
  11. CodeForces 687A NP-Hard Problem(二分图判定)
  12. WPF 杂谈——自定义控件
  13. winform listview用法
  14. SSH反向连接及Autossh
  15. XIB中拖UIScrollView的困难
  16. 【Android Studio安装部署系列】五、新建你的第一个项目:HelloWorld
  17. swift 自动布局设置 tableview 的 tableHeaderView 的高度
  18. 6.02-news_re
  19. 这次聊聊Promise对象
  20. webapi Filter

热门文章

  1. 从Airbnb的发展历程和网易云的大起大落看IT行业创新(第5周课后作业)
  2. Python 基础 2-1 列表入门
  3. [python3]未配置locale的主机出现UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0x....的解决
  4. 浅谈HTTP与其工作流程
  5. STL_map
  6. 【Luogu】【关卡2-7】深度优先搜索(2017年10月)【AK】【题解没写完】
  7. 2018CSS特效集锦牛逼
  8. jq enter键发送
  9. Centos 更改语言设置为中文
  10. git——创建分支后,切换分支报错(error: pathspec &#39;master&#39; did not match any file(s) known to git)