HDU 1686 Oulipo(KMP)
1090 ワード
タイトル:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110986#problem/G
コード:
目標を再確認する時です。大学一年生の夏休みは、まず北京大学で勉強します。学校に帰って合宿します
9月のアジアエリアで銅を持つことを目標にしています。頑張って!今度はきっと成功します。
コード:
#include<stdio.h>
#include<string.h>
using namespace std;
char w[10005],t[1000005];
int next[10005];
int N,M;
void get_next()
{
int i=0,j=next[0]=-1;
while(i<M)
{
if(j==-1||w[i]==w[j])
{
i++;j++;
next[i]=j;
}
else j=next[j];
}
}
int kmp()
{
int i=0,j=0;
int num=0;
while(i<N)
{
if(j==-1||t[i]==w[j])
{
i++;j++;
}
else j=next[j];
if(j==M)
{
num++;
j=next[j];
}
}
printf("%d
",num);
}
int main()
{
int c,h,i;
scanf("%d",&c);
while(c--)
{
scanf("%s",w);
scanf("%s",t);
N=strlen(t);
M=strlen(w);
get_next();
kmp();
}
}
KMPアルゴリズムについてはまだ一知半解である。もう少し見てみましょう目標を再確認する時です。大学一年生の夏休みは、まず北京大学で勉強します。学校に帰って合宿します
9月のアジアエリアで銅を持つことを目標にしています。頑張って!今度はきっと成功します。