hdu1686(kmp)
http://acm.hdu.edu.cn/showproblem.php?pid=1686
#include<iostream> using namespace std; int next[10005]; char s[10005],t[1000006]; void getnext(char s[]) { int i=0,j=-1; next[0]=-1; int len=strlen(s); while(i<len) if(j==-1||s[i]==s[j]) { i++; j++; next[i]=j; } else j=next[j]; } int kmp(char s[],char t[]) { int num=0,i=0,j=0; int len=strlen(s); int lenn=strlen(t); while(i<lenn&&j<len) { if(j==-1||s[j]==t[i]) { i++; j++; } else j=next[j]; if(j>=len) { num++; //printf("\n%d\n",i); j=next[j]; } } return num; } int main() { int f; scanf("%d",&f); while(f--) { scanf("%s",s); scanf("%s",t); getnext(s); printf("%d\n",kmp(s,t)); } return 0; }
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。