• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            DraculaW

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              19 隨筆 :: 0 文章 :: 7 評論 :: 0 Trackbacks
            template<typename T>
            void prefix(T* p, int m, int* next)
            {
                   int i, j;
                   i = 0;
                   j = next[0] = -1;
                   while (i < m) {
                       while (j > -1 && p[i] != p[j])
                                 j = next[j];
                       i++;
                       j++;
                       if (p[i] == p[j])
                                 next[i] = next[j];
                       else
                                 next[i] = j;
                   }
            }
            /* ---------- end of function prefix ---------- */

            /*****************************************************************************
            * Function : KMP                                                            *
            * T     *t : The string need be matching                                    *
            * int    n : The length of the string                                       *
            * T     *p : The sub string to matching                                     *
            * int    m : The length of the p                                            *
            * int *out : An array mark the string match where ( max length is m - n )   *
            *****************************************************************************/
            template<typename T>
            int KMP(T* t, int n, T* p, int m, int* out)
            {
                      int c = 0;
                int i, j, next[m];
                prefix(p, m, next);
                i = 0;
                j = 0;
                while(i < n)
                {
                    while( j > -1 && p[j] != t[i])
                        j = next[j];
                    i++; j++;
                    if( j >= m )
                    {       
                        out[c++] = i - m;
                        j = next[j];
                    }
                }
                      return c;
            }
            /* ---------- end of function KMP ---------- */

            // 這個算法 也研究了很久了。對于他的原理 我早已經清楚,但是快速的寫出他還是不是那么順利。也是因為我寫的程序太少了吧 呵呵。 理解中記憶。 嗯 不能死記硬背啊 呵呵。
            posted on 2007-11-15 20:36 DraculaW 閱讀(91) 評論(0)  編輯 收藏 引用
            久久久亚洲欧洲日产国码aⅴ| 国产精品久久久99| 蜜桃麻豆WWW久久囤产精品| 久久天天躁夜夜躁狠狠| 久久99国产综合精品免费| 国产精品日韩深夜福利久久| 久久人人超碰精品CAOPOREN| 精品久久久中文字幕人妻| 狠狠色丁香婷婷久久综合不卡| 精品久久久久久久久久中文字幕| 久久亚洲日韩看片无码| 国产精品99久久精品| 无码乱码观看精品久久| 久久久精品午夜免费不卡| 日批日出水久久亚洲精品tv| 久久国产精品久久| 亚洲中文精品久久久久久不卡| 国产精品伊人久久伊人电影| 欧美大香线蕉线伊人久久| 日本加勒比久久精品| 99久久亚洲综合精品成人| 久久久久99精品成人片直播| 亚洲人成电影网站久久| 精品人妻伦九区久久AAA片69| 亚洲日韩中文无码久久| 亚洲七七久久精品中文国产 | 久久久亚洲精品蜜桃臀| 亚洲精品白浆高清久久久久久| 国产日韩欧美久久| 国产精品伊人久久伊人电影 | 久久综合九色综合网站| 中文字幕无码久久人妻| 欧美精品一区二区久久| 久久男人AV资源网站| 久久无码一区二区三区少妇| 国内精品久久久久久麻豆| 国产成人久久精品二区三区| 99久久国产主播综合精品| 久久精品国产第一区二区| 深夜久久AAAAA级毛片免费看| 亚洲国产视频久久|