zoukankan      html  css  js  c++  java
  • 匹配串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的年代,胶片照片年代做假的也不少,那时候都相信假的!)

  • 相关阅读:
    Java 中的按值传递
    字符串排序(非字典排序)
    字符串匹配的KMP算法(转)
    效率更高的整数转化为字符串函数
    Trie 树(转)
    C 语言字符串(译)
    linux 下 epoll 编程
    CSS攻击:记录用户密码
    Wireshark(抓包神器)使用方法
    搭建KVM环境——Linux上安装KVM带web管理界面
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3057310.html
Copyright © 2011-2022 走看看