解题思路:使用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语言代码)浏览:610 |
【亲和数】 (C语言代码)浏览:859 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1817 |
输出正反三角形 (C语言代码)浏览:794 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:946 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:624 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:469 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:857 |
核桃的数量 (C语言代码)浏览:671 |
图形输出 (C语言代码)浏览:1387 |