日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 1618 Oulipo KMP解决问题的方法

發布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 1618 Oulipo KMP解决问题的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鑒于兩個字符串,尋找一個字符串的頻率,另一個字符串出現。

原版的kmp另一個陷阱。以下凝視了,標不是踩著好,有加班一定幾率,也有機會錯誤,根據不同的字符串可以是詳細。

變化看起來像一個,kmp速度是非常快的。


#include <stdio.h> #include <string.h>const int MAX_TXT = 1000001; const int MAX_WORD = 10001; int gWlen, gTlen; char word[MAX_WORD]; int next[MAX_WORD]; char txt[MAX_TXT];void getNext() {memset(next, 0, sizeof(int) * gWlen);for (int i = 1, j = 0; i < gWlen; ){if (word[i] == word[j]) next[i++] = ++j;else if (j > 0) j = next[j-1];else i++;} }int kmpSearch() {int i = 0, j = 0, ans = 0;for (; gWlen-j <= gTlen-i; ){if (word[j] == txt[i]){j++; i++;if (j == gWlen){ans++;j = next[j-1];}//else i++; i++放這里會超時,是一定幾率會出現超時。注意了!}else if (j > 0) j = next[j-1];else i++;}return ans; }int main() {int T;scanf("%d", &T);getchar();while (T--){gets(word);gWlen = strlen(word);gets(txt);gTlen = strlen(txt);getNext();printf("%d\n", kmpSearch());}return 0; }


版權聲明:筆者靖心臟,景空間地址:http://blog.csdn.net/kenden23/。只有經過作者同意轉載。

總結

以上是生活随笔為你收集整理的HDU 1618 Oulipo KMP解决问题的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。