每日一贴,今天的内容关键字为匹配串
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的年代,胶片照片年代做假的也不少,那时候都相信假的!)