• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              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 閱讀(90) 評論(0)  編輯 收藏 引用
            中文精品久久久久人妻| 狠狠色丁香久久综合婷婷| 色综合久久中文字幕综合网| 久久人人超碰精品CAOPOREN| 亚洲精品无码专区久久同性男| 漂亮人妻被黑人久久精品| 国产 亚洲 欧美 另类 久久| 精品伊人久久大线蕉色首页| 国产一区二区精品久久| 一本一本久久a久久精品综合麻豆| 韩国免费A级毛片久久| 日批日出水久久亚洲精品tv| 99久久免费国产特黄| 免费精品久久天干天干| 国产福利电影一区二区三区久久久久成人精品综合 | 久久精品视屏| 久久天堂AV综合合色蜜桃网| 久久黄色视频| 久久99精品国产麻豆宅宅| 成人午夜精品无码区久久| 久久精品国产精品亚洲| 99精品伊人久久久大香线蕉| 久久精品国产亚洲AV电影| 伊人久久大香线蕉综合网站| 久久久久国产一级毛片高清板| 久久99精品久久久久久久久久| 久久久久久久久久久精品尤物| 久久久久久毛片免费看| 国产一久久香蕉国产线看观看| 久久综合狠狠综合久久综合88| 久久久国产视频| 久久婷婷色综合一区二区| 久久久WWW成人| 久久久久久极精品久久久| 久久99久久成人免费播放| 国产一区二区三区久久精品| 99久久99这里只有免费费精品 | 久久久这里有精品| 亚洲国产成人久久笫一页| 亚洲国产精品一区二区三区久久| 国产精品免费久久久久电影网|