zoukankan      html  css  js  c++  java
  • hdu 3746KMP的应用

    其实很简单,只要对KMP的next数组的含义能理解的话,就没有问题了。

    /*
     * hdu3746/win.cpp
     * Created on: 2012-8-2
     * Author    : ben
     */
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <set>
    #include <map>
    #include <stack>
    #include <string>
    #include <vector>
    #include <deque>
    #include <list>
    #include <functional>
    #include <numeric>
    #include <cctype>
    using namespace std;
    const int MAX_LEN = 200010;
    char pattern[MAX_LEN];
    int next[MAX_LEN], parlen;
    void getnext() {
        int i = 0, j = -1;
        next[0] = -1;
        while (i <= parlen) {
            if (j < 0 || pattern[i] == pattern[j]) {
                i++;
                j++;
                next[i] = j;
            } else {
                j = next[j];
            }
        }
    }
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("data.in", "r", stdin);
    #endif
        int T, ans;
        scanf("%d", &T);
        while(T--) {
            scanf("%s", pattern);
            parlen = strlen(pattern);
            getnext();
            int ret = next[parlen];
            if(ret > parlen / 2) {
                int xhj = parlen - ret;
                ans = (xhj - parlen % xhj) % xhj;
            }else {
                ans = parlen - ret * 2;
            }
            printf("%d\n", ans);
        }
        return 0;
    }
  • 相关阅读:
    HTML向Flex传参
    Flex数据推送
    Flex+BlazeDS+Spring整合
    Clone Graph
    Word Break II
    Word Break
    Pascal's Triangle
    N-Queens II
    N-Queens
    Length of Last Word
  • 原文地址:https://www.cnblogs.com/moonbay/p/2619242.html
Copyright © 2011-2022 走看看