• 匹配串HDOJ 1711 Number Sequence(KMP)


    每日一贴,今天的内容关键字为匹配串

        超等传送门

        KMP,只不过由字符串变长成形整而已,套板模可过。

        S[]寄存主串,T[]寄存匹配串,T[0]和S[0]示表串的长度

        AC代码:

        

        每日一道理
    父亲对于儿子来说,是座耸立的高山,而儿子只是颗石子,源于山,却并不了解山。生活中诸多爱的密码,是需用细节来解读的,在亲情的沃土上,要想搞得最美的果实,惟有期待那存在于瞬间的心与心的共鸣,爱与爱的默契。
    /*HDOJ1711
    作者:陈佳润
    2013-05-02*/
    #include<stdio.h>
    
    long next[10005];
    long S[1000005],T[10005]; 
    
    void Get_next(long T[]){//结构next组数
    	int i=1,j=0;
    	next[1]=0;
    	while(i<T[0]){
    		if(j==0||T[i]==T[j]){
    			i++;
    			j++;
    			next[i]=j;
    		}
    		else
    			j=next[j];
    	}
    }
    
    //s[0]和T[0]保存组数长度
    int KMP(long S[],long T[]){
    	int i=0,j=0;
    	while(i<=S[0]&&j<=T[0]){
    		if(j==0||S[i]==T[j]){//
    			i++;
    			j++;
    		}else{
    			j=next[j];
    		}
    	}
    	if(j>T[0])
    		return i-T[0];//匹配功成,返回肇端位置
    	else
    		return -1;//匹配失败
    }
    
    int main(){
    	int i,Time;
    	scanf("%d",&Time);
    	while(Time--){
    		scanf("%d%d",&S[0],&T[0]);
    		for(i=1;i<=S[0];i++)
    			scanf("%d",&S[i]);
    		for(i=1;i<=T[0];i++)
    			scanf("%d",&T[i]);
    		Get_next(T);
    		printf("%d\n",KMP(S,T));
    	}
    	return 0;
    }

    文章结束给大家分享下程序员的一些笑话语录: 自从有了Photoshop,我再也不相信照片了!(没有Photoshop的年代,胶片照片年代做假的也不少,那时候都相信假的!)

  • 相关阅读:
    PHP 上传文件 function move_uploaded_file: failed to open stream
    python super() 方法使用
    python 负数转为无符号整数
    python Aes 加密 解密
    mongoDB 启动 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
    ansible使用
    字段类型binary
    7-14 求整数段和
    7-13 日K蜡烛图
    7-12 两个数的简单计算器
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3057310.html
Copyright © 2020-2023  润新知