解题思路:使用KMP算法也可以过。
具体实现百度一大堆
注意事项:
参考代码:
#include <bits/stdc++.h> using namespace std; void get_next(char T[],int next[]){ int i,j; i = 0; j = 1; next[1] =0; while(j<T[0]){ /* 第一个元素*/ if(i == 0 ||T[i]==T[j]) { i++; j++; next[j] = i; } else i = next[i];//不相等 } } int Index_KMP(char s[],char T[]){ int next[1000]; int j = 1; int i = 1; get_next(T,next); 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]; return 0; } int main () { char T[1000],S[1000]; int i,k; while(scanf("%s %s",S,T)!=EOF){ k = strlen(T); for(i = strlen(T);i>0;i--) T[i] = T[i-1]; T[0] = k; k = strlen(S); for(int i = strlen(S);i>0;i--) S[i] = S[i-1]; S[0] = k; printf("%d\n",Index_KMP(S,T)); } return 0; }
0.0分
0 人评分
C语言训练-排序问题<1> (C语言代码)浏览:599 |
字符串比较 (C语言代码)答案错误????浏览:596 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:587 |
WU-图形输出 (C++代码)浏览:802 |
WU-字符串比较 (C++代码)浏览:754 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2092 |
A+B for Input-Output Practice (VI) (C语言代码)浏览:552 |
【亲和数】 (C语言代码)浏览:597 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1067 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:399 |