首页 > 代码库 > poj 3461 Oulipo
poj 3461 Oulipo
题目链接:http://poj.org/problem?id=3461
思路:
字符串匹配问题,使用KMP算法解决。
代码:
#include <stdio.h>char T[1000005], W[10005];int Next[10005];int Len_T, Len_W;void GetNext( ){ int i = 0, j = -1; Next[0] = -1; if ( W[0] == ‘\0‘ ) return; while ( i < Len_W ) { if ( j == -1 || W[i] == W[j] ) { ++i; ++j; Next[i] = j; } else j = Next[j]; }}int Matcher( ){ int i = 0, j = 0, Count = 0; while ( i < Len_T ) { if ( j == -1 || T[i] == W[j] ) { ++i; ++j; } else j = Next[j]; if( j == Len_W ) Count++; } return Count;}int main( ){ int n; scanf( "%d\n", &n ); while ( n-- ) { int ans; char Tmp; Len_T = Len_W = 0; while ( ( Tmp = getchar( ) ) != ‘\n‘ ) W[Len_W++] = Tmp; W[Len_W] = ‘\0‘; while ( ( Tmp = getchar( ) ) != ‘\n‘ ) T[Len_T++] = Tmp; T[Len_T] = ‘\0‘; GetNext( ); ans = Matcher( ); printf( "%d\n", ans ); } return 0;}
poj 3461 Oulipo
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。