南阳5--Binary String Matching(Kmp)
生活随笔
收集整理的這篇文章主要介紹了
南阳5--Binary String Matching(Kmp)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Binary String Matching
時(shí)間限制:3000?ms ?|? 內(nèi)存限制:65535?KB 難度:3 描述?kmp ?裸題;
#include <cstdio> #include <cstring> #include <iostream> using namespace std; char a[15], b[1010]; int p[1010], lena, lenb, ans; void Getp() {int i = 0, j = -1;p[i] = j;while(i != lena){if(j == -1 || a[i] == a[j]){i++, j++;p[i] = j; } elsej = p[j];} } void Kmp() {Getp();int i = 0, j = 0;while(i != lenb){if(j == -1 || b[i] == a[j]) i++, j++;else j = p[j];if(j == lena)ans++; } printf("%d\n", ans); } int main() {int t;scanf("%d", &t);while(t--){ans = 0;scanf("%s%s", a, b);lena = strlen(a);lenb = strlen(b);Kmp();}return 0; }?
暴力: 竟然也是 0 ms;?
#include <cstdio> #include <cstring> #include <iostream> using namespace std; char a[15], b[1010]; int lena, lenb; int main() {int t;scanf("%d", &t);while(t--){int i, j, sum = 0;scanf("%s %s", a, b);int lena = strlen(a), lenb = strlen(b);for(i = 0; i <= lenb - lena; i++){if(b[i] == a[0]){for(j = 1; j < lena; j++)if(b[i+j] != a[j])break;if(j == lena)sum++;} }printf("%d\n", sum);} return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/soTired/p/4749391.html
總結(jié)
以上是生活随笔為你收集整理的南阳5--Binary String Matching(Kmp)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【原创】多线程应用中pthread库使用
- 下一篇: 汉字内码