kpm 网速是怎样计算的的

扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
kpm是什么单位?
扫二维码下载作业帮
1.75亿学生的选择
Keystrokes Per Minute,每分钟敲击键盘的速度.网络语言是只kfc,pizza,和麦当劳
为您推荐:
其他类似问题
扫描下载二维码KPM算法心得体会
next函数求法(目前只能死记)
&next& -1&
0& 0& 1& 2
第0位,next[0]=-1
第1位,next[1]=0
第2位,b!=p[0]=a =& next[2]=next[next[1]]=-1+1=0
第3位,a==p[0]=a =& next[3]=0+1=1
第4位,b==p[1]=b =& next[3]=1+1=2
技巧:算哪位就看前一位
--------------------------------------------
next优化过程
next& -1& 0&
next_adv& -1& 0&
第1位,b!=p[0]=a =&&
next_adv[1]=next[1]=0,不变
第2位,a==p[0]=a =&&
next_adv[2]=next[0]=-1
第3位,b==p[1]=b =&&
next_adv[3]=next[1]=0
第4位,c!=p[2]=a =&&
next_adv[1]=next[1]=2,不变
技巧:比较p[i]和p[next[i]],不一样,不变,一样,赋值
----------------------------------------------
KPM匹配过程
aaaaabababcaaa
ababc&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&&
---------------------------------------------
源代码如下:
#include &iostream&
#include &cstring&
void getNext(const char *p,int next[])//多算一位的next算法
next[0]=-1;
len=strlen(p);
while(i&=len)
if(j==-1||p[i]==p[j])
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&
//next[i]=j;//以下是改进的算法
&&&&&&&&&&&
if(p[i]!=p[j])&&&&&
next[i]=j;&&&&&&&&&&&&
&&&&&&&&&&&
else next[i]=next[j];
&&&&&&&&&&&
else j=next[j];
//返回匹配的首位置
int kpm_search( char *t,char *p,int next[])
len_t=strlen(t);
len_p=strlen(p);
&&&&while(i&len_t)
if(j==-1||t[i]==p[j])
&&&&&&&&&&&
&&&&&&&&&&&
else j=next[j];
if(j&=len_p)
&&&&&&&&//j=0;重置j可以继续下一个查找
return i-len_p;
&&&&return
int main()
p[]="ababc";
t[]="aaaaabababcaaa";
len=strlen(p);
next[len+1];
get_nextval(p,next);
&&& for(int i=0;
cout&&next[i]&&",";
cout&&kmp_match(t,p,next,0)&&
&&& return
已投稿到:}

我要回帖

更多关于 kpm是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信