KMP算法其实很好理解,就是在匹配串中找最近的相同的串。

  下面是HDU的2087:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define maxn 1005
using namespace std;
string s1,s2;
int f[maxn],ans;
void kmp(string &x,string &y)
{
int le=x.size(),j=,ll=y.size();
for (int i=;i<le;i++)
{
while (j&&x[i]!=y[j])
j=f[j];
if (x[i]==y[j]) j++;
if (j==ll) {
ans++;//j=0;
}
}
}
void find(string &x)
{
int ll=x.size(),j=;
f[]=;f[]=;
for (int i=;i<ll;i++)//从第二个点开始
{
j=f[j];
while (j&&x[j]!=x[i]) j=f[j];
f[i+]= x[j]==x[i] ? j+ : ;
}
}
int main()
{
//freopen("2087kmp.in","r",stdin);
while (cin>>s1&&s1[]!='#')//cin不读空格
{
cin>>s2;
memset(f,,sizeof (f));
ans=;
find(s2);
kmp(s1,s2);
cout<<ans<<endl;
}
return ;
}

最新文章

  1. Linux打包与压缩及tar命令详解
  2. 再解java中的String
  3. c++错误——intermediate.manifest : general error c1010070很傻的错
  4. Saltstack之Syndic(十)
  5. oralce CASE WHEN 用法
  6. graph-tool文档(一)- 快速开始使用Graph-tool - 2.属性映射、图的IO和Price网络
  7. redis的启动与停止
  8. Windows环境变量
  9. Please check if the Publishing Tools on the server (System/PublishingTools) are started.
  10. Spring注解基本解读
  11. 【拓扑排序】【线段树】Gym - 101102K - Topological Sort
  12. read命令读取用户输入
  13. iOS开发中如何创建多个target
  14. MapReduce-实践1
  15. Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置
  16. Linux网络配置(setup)
  17. 报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
  18. Java异常处理的方法
  19. java算法大全
  20. 如何认识TOS----DSCP 对照表

热门文章

  1. Python学习笔记11—函数
  2. 关于level DB的相关资料
  3. number-of-segments-in-a-string
  4. C++——使用类
  5. 详解zabbix安装部署(Server端篇)
  6. spring配置详解
  7. 深入理解JVM-3垃圾收集器与内存分配策略
  8. 百度编辑器ueditor获取不到内容?请把form放在table等其他元素最外面
  9. 打不开chm文件解决办法
  10. qq 换密保方法 只要有密保就好换手机