Before seeing the solution make sure that you tried enough. Don’t paste the whole code, just find out the logic. If you stuck in trouble, just inform me on comment.
/**Bismillahir Rahmanir Rahim.**/ #include <stdio.h> #include <string.h> char T[10000]; char P[100]; int save = 0, ara[125], TABLE[100][125]; int i, j, k, l, lnth, cndtn, cnt, m; int F(int s, char t); int main() { int lnth_p, K, S=0; printf("Please, Input String.\n"); gets(T); printf("Please, Input Sub-string.\n"); gets(P); lnth_p = strlen(P); for(K=0;T[K] && S!=lnth_p; K++) S = F(S,T[K]); if(S == lnth_p) printf("INDEX is started from place %d\n", K-lnth_p); else printf("There is no matching\n"); return 0; } int F(int s, char t) { if(save == 0) { lnth = strlen(P); for(i=0; T[i]; i++) ara[T[i]]=1; for(i=0; i<lnth; i++) { for(j=0; j<125; j++) { if(ara[j]==0) continue; if(P[i]==j) { TABLE[i][j] = (save+=1); continue; } for(k=i-1; k>=0; k--) { if(P[k] == j) { for(l=k-1,m=i-1, cnt=1; l>=0; l--, m--) { if(P[l] == P[m]) cnt++; else break; } if(cnt == k+1) { TABLE[i][j] = cnt; break; } } } } } save = 1; } return TABLE[s][t]; }
0 comments:
Post a Comment
Note: only a member of this blog may post a comment.