⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn_文档中心_我写的kmp 算法.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <TR bgColor=#999999>
    <TD colSpan=3 height=1></TD></TR></TBODY></TABLE>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD align=middle bgColor=#fafafa class=td1 vAlign=top width=150><BR>
      <SCRIPT src="CSDN_文档中心_我写的KMP 算法.files/microsoft.js"></SCRIPT>
    </TD>
    <TD align=middle width=620>
      <TABLE bgColor=#eeeeee border=0 cellPadding=0 cellSpacing=0 width=600>
        <TBODY>
        <TR bgColor=#ffffff>
          <TD align=middle height=10 width=50></TD>
          <TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A 
            href="http://www.csdn.net/develop/">文档中心</A> - <FONT 
            color=#003399>Visual C++</FONT>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399 height=10><FONT 
            color=#ffffff>标题</FONT></TD>
          <TD><B>&nbsp;&nbsp;&nbsp;&nbsp;我写的KMP 
            算法</B>&nbsp;&nbsp;&nbsp;&nbsp;jjduan185(原作) </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
          <TD width=500>&nbsp;&nbsp;&nbsp;&nbsp;KMP</TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
      <TABLE border=0 width=600>
        <TBODY>
        <TR>
          <TD align=left><BR>
            <P>#include&lt;iostream&gt;<BR>#include&lt;time.h&gt;<BR>#include&lt;string&gt;<BR>using 
            namespace std;<BR>void init(string ,string);<BR>void show(char 
            [],int);<BR>int kmp(string ,string,int pos);<BR>void 
            get_next(char*,int *);<BR>string s1,t1;<BR>int m,n;<BR>char 
            *s;<BR>char *t;<BR>int 
            *next;<BR>/*************************MAIN**************************************/<BR>int 
            main(int argc[],char*args[])<BR>{<BR>&nbsp;&nbsp;&nbsp; 
            <BR>&nbsp;double 
            t=clock();<BR>&nbsp;cout&lt;&lt;"找到位置为:"&lt;&lt;kmp("acbsabcaacabaabaabcacaabc","abaabca",1)&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp; 
            delete[] s;<BR>&nbsp;delete[] 
            next;<BR>&nbsp;cout&lt;&lt;"耗时:"&lt;&lt;(clock()-t)/1000&lt;&lt;"毫秒!"&lt;&lt;endl;<BR>&nbsp;return 
            0;<BR>}&nbsp;&nbsp; 
            <BR>/**********************++++NEXT++++********************************/<BR>void 
            get_next(char s[],int ne[])<BR>{<BR>&nbsp;&nbsp;&nbsp; ne =new 
            int[n+1];<BR>&nbsp;&nbsp;&nbsp; next=new 
            int[n+1];<BR>&nbsp;&nbsp;&nbsp; ne[0]=9999;<BR>&nbsp;&nbsp;&nbsp; 
            int i(1),j(0);<BR>&nbsp;&nbsp;&nbsp; ne[1]=0;<BR>&nbsp;&nbsp;&nbsp; 
            while(i&lt;=(int)(t[0]))//数组是字符型的,要转化为整数<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            if(j==0||t[i]==t[j]){++i;++j;ne[i]=j;}<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            else j=ne[j];<BR>&nbsp;}<BR>&nbsp;&nbsp; for( 
            i=1;i&lt;=n;i++)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp; 
            cout&lt;&lt;"next["&lt;&lt;i&lt;&lt;"]="&lt;&lt;ne[i]&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            next[i]=ne[i];<BR>&nbsp;&nbsp; 
            }<BR>}<BR>/********************++++KMP+++**********************************/<BR>&nbsp; 
            int kmp(string s0,string t0,int pos)<BR>&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            init(s0,t0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int 
            i=pos,j=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            while(i&lt;=((int)(s[0]))&amp;&amp;(j&lt;=((int)(t[0]))))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if((j==0)||(s[i]==t[j])){++i;++j;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            else j=next[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if(j&gt;(int)(t[0])) return 
            i-((int)(t[0]));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
            return 0;</P>
            <P>&nbsp; 
            }<BR>/***************++++INIT+++*****************************************/<BR>&nbsp;&nbsp;&nbsp; 
            void init(string ss,string 
            tt)<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            //cout&lt;&lt;"请输入原串S=: 
            "&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            //cin&gt;&gt;s1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            //cout&lt;&lt;"请输入模式串T=:"&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            //cin&gt;&gt;t1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            s1=ss;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            t1=tt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m=s1.length(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            n=t1.length();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            //if((s=(char*)malloc((m+1)*sizeof(char)))&lt;0){cout&lt;&lt;"failed\n";return;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            s=new char[m+1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            s[0]=m;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if((t=(char*) 
            malloc((n+1)*sizeof(char)))&lt;0) 
            {cout&lt;&lt;"failed\n";return;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            t=new char[n+1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            t[0]=n;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int 
            i=1;i&lt;=m;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            s[i]=s1.at(i-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( 
            i=1;i&lt;=n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            t[i]=t1.at(i-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cout&lt;&lt;"原串为: ";&nbsp;&nbsp;&nbsp; 
            show(s,m);<BR>&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"模式串为: ";&nbsp; 
            show(t,n);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            get_next(t,next); 
            <BR>&nbsp;}<BR>/*******************++++SHOW+++**************************************/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            void show(char s[],int n )<BR>&nbsp;&nbsp;&nbsp; 
            {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int 
            i=1;i&lt;=n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cout&lt;&lt;s[i]&lt;&lt;"&nbsp; 
            ";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cout&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            cout&lt;&lt;"长度为: 
            "&lt;&lt;int(s[0])&lt;&lt;"\n";<BR>&nbsp;&nbsp;&nbsp; 
          }<BR></P><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
width=770>
  <TBODY>
  <TR bgColor=#006699>
    <TD align=middle bgColor=#006699 id=white><FONT 
    color=#ffffff>对该文的评论</FONT></TD>
    <TD align=middle>
      <SCRIPT src="CSDN_文档中心_我写的KMP 算法.files/readnum.htm"></SCRIPT>
    </TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TH bgColor=#006699 id=white><FONT 
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD>你没有登陆,无法发表评论。 请先<A 
      href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=27392">登陆</A> 
      <A 
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>

<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
  <TBODY>
  <TR align=middle>
    <TD height=10 vAlign=bottom><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      border=0 height=48 src="CSDN_文档中心_我写的KMP 算法.files/biaoshi.gif" 
      width=40></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -