hdoj 1686 kmp
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn1=1000010;
const int maxn2=10010;
int n,m;
char a[maxn1];
char b[maxn2];
int next[maxn2];
int main()
{
int kmp ( char *a,char *b,int *next);//相应的类型必须改为char型
int t;
cin>>t;
while(t--)
{
cin>>b;//先输入短串即串2
cin>>a;
n=strlen(a);
m=strlen(b);
int ans=kmp(a,b,next);
cout<<ans<<endl;
}
return 0;
}
//此函数用来求匹配串s串的next数组
void getnext (char *s,int *next)
{
next[0]=next[1]=0;
for (int i=1;i<m;i++)//m为匹配串s的长度
{
int j=next[i];
while (j&&s[i]!=s[j])
j=next[j];
next[i+1]=s[i]==s[j]?j+1:0;
}
}
//此函数用来计算串b在串a中出现的次数(a中的字母可以重复利用)
int kmp (char *a,char *b,int *next)
{
int times=0;
getnext (b,next);/////////
int j=0;
for (int i=0;i<n;i++)
{/////n为串1的长度
while (j&&a[i]!=b[j])
j=next[j];
if (a[i]==b[j])
j++;
if (j==m)//m为串2的长度
{
times++;j=next[j];//加了一个计数器和j=next[j]
}
if(i==n-1)
{return times;}
}
}
hdoj 1686 kmp的更多相关文章
- hdu 1686 KMP模板
// hdu 1686 KMP模板 // 没啥好说的,KMP裸题,这里是MP模板 #include <cstdio> #include <iostream> #include ...
- HDOJ(1238) KMP
Substrings http://acm.hdu.edu.cn/showproblem.php?pid=1238 先找到长度最短的字符串,把它的子串和该子串的逆序(按长度从大到小)依次与其他字符串匹 ...
- HDU 1686 & KMP
题意: 求模板在匹配串所有子串中出现次数. SOL: 本题与普通kmp有一点不同,因为待匹配串中的模板串可能相互包含. 我们考虑正常的kmp是在怎么做的 i = 1 2 3 4 5 6 7 8 9 … ...
- HDU 1686 (KMP模式串出现的次数) Oulipo
题意: 求模式串W在母串T中出现的次数,各个匹配串中允许有重叠的部分. 分析: 一开始想不清楚当一次匹配完成时该怎么办,我还SB地让i回溯到某个位置上去. 后来仔细想想,完全不用,直接让模式串向前滑动 ...
- hdoj 1686 Oulipo【求一个字符串在另一个字符串中出现次数】
Oulipo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- Oulipo HDU 1686 KMP模板
题目大意:求模式串在主串中的出现次数. 题目思路:KMP模板题 #include<iostream> #include<algorithm> #include<cstri ...
- hdu 1686 KMP算法
题意: 求子串w在T中出现的次数. kmp算法详解:http://www.cnblogs.com/XDJjy/p/3871045.html #include <iostream> #inc ...
- 杭电hdoj题目分类
HDOJ 题目分类 //分类不是绝对的 //"*" 表示好题,需要多次回味 //"?"表示结论是正确的,但还停留在模块阶 段,需要理解,证明. //简单题看到就 ...
- HDOJ 题目分类
HDOJ 题目分类 /* * 一:简单题 */ 1000: 入门用:1001: 用高斯求和公式要防溢出1004:1012:1013: 对9取余好了1017:1021:1027: ...
随机推荐
- WordPress /wp-admin/includes/post.php user_ID 参数操作权限提升漏洞
漏洞版本: WordPress 3.6 漏洞描述: Bugtraq ID:62346 CVE ID:CVE-2013-4340 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PH ...
- LR报-27727错误解决办法
1.报如下错误:Action.c(4):Error-27727:Step download timeout(120 seconds) has expired when downloading reso ...
- Unity3D屠龙战机项目总结
之前跟着老师后面边学边做了一个屠龙战机项目,在这个项目中,主要用到的技术,在这里总结一下(本次项目的脚本语言用的是JS): 1. 如果想在场景中导入一个声音文件,则需要在脚本中添加一个变量,如在脚本 ...
- 【算法入门】广度/宽度优先搜索(BFS)
广度/宽度优先搜索(BFS) [算法入门] 1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较 ...
- HDU 4722 Good Numbers 2013年四川省赛题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 题目大意:给定一个区间,求区间中有多少个满足每位上的数的和是10的倍数. 解题思路:先打表暴力求 ...
- 删除N 中 所有的 x
//删除N 中 所有的 x #include <stdio.h> #define N 10 int f(int a[],int n,int x) { int i ,j=0; for(i=0 ...
- Error: rpmdb open failed
yumrpmdb: Thread/process 17132/140266190264064 failed: Thread died in Berkeley DB l ...
- IOS性能调优系列:Analyze静态分析
目前关于IOS性能优化的教程较少,决定写一个<IOS性能调优系列>,主要关注与内存泄漏.性能优化.流量和电量分析几个方面. XCode已经提供了非常强大的性能调优工具,结合几个第三方工具和 ...
- 403. Frog Jump
做完了终于可以吃饭了,万岁~ 假设从stone[i]无法跳到stone[i+1]: 可能是,他们之间的距离超过了stone[i]所能跳的最远距离,0 1 3 7, 从3怎么都调不到7: 也可能是,他们 ...
- Dubbo xml配置 和注解配置 写法
<?xml version="1.0" encoding="UTF-8"?><!-- - Copyright 1999-2011 Alibab ...