码迷,mamicode.com
首页 > 其他好文 > 详细

SDUT OJ 2463 学密码学一定得学程序

时间:2014-11-12 23:00:17      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:kmp

bubuko.com,布布扣
#include<iostream>
#include<string.h>
#include<stdio.h>
#define N 10010
#define M 1000100
using namespace std;
int next[N];
char s[M],t[N];
void getnext(char s[])
{
    int i=0,j=-1,len;
	next[0]=-1;
	len=strlen(s);
	while(i<len)
	{
		if(j==-1 || s[i]==s[j])
		{
			i++;
			j++;
			if(s[i]!=s[j])  
				next[i]=j;
			else
                next[i]=next[j];
		}
		else
			j=next[j];
	}
}
int KMP(char s[],char t[])
{
	int i=0,j=0,len,len1;
	len=strlen(s);
	len1=strlen(t);
	while(i<len && j<len1)
	{
		if(j==-1 || s[i]==t[j])
		{	i++;
		    j++;
		}
		else
			j=next[j];
	}
	if(j>=len1)  return i-len1+1;
	else   return 0;
}	    
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		cin>>s>>t;
	    getnext(t);
		int m=KMP(s,t);
		if(m)
			cout<<m<<endl;
		else
			cout<<"::>_<::"<<endl;
	}
	return 0;
}

SDUT OJ 2463 学密码学一定得学程序

标签:kmp

原文地址:http://blog.csdn.net/r_misaya/article/details/41053793

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!