글
KMP 알고리즘
A/Algorithm
2011. 10. 28. 12:41
#include출처 : http://211.228.163.31/30stair/KMP_doc/KMP_doc.php?pname=KMP_doc#include char s[1000]={0},p[100]={0}; int n,m,pi[100]={0}; void find_pi() { int i=0,j=-1; pi[0]=-1; while(i < m) { if(j==-1 || p[i]==p[j]) { i++,j++; pi[i]=j; } else j=pi[j]; } } void kmp() { int i=0,j=0; while(i < n) { if(j==-1 || s[i]==p[j]) i++,j++; else j=pi[j]; if(j==m) { printf("Match : %d to %d\n",i-m+1,i); j=pi[j]; } } } int main(void) { scanf("%s",s); scanf("%s",p); n=strlen(s),m=strlen(p); find_pi(); kmp(); return 0; }
'A > Algorithm' 카테고리의 다른 글
연결성 문제를 위한 가중 퀵병합 방식 (0) | 2011.10.27 |
---|---|
재밋는? 러시아 페인트공 알고리즘 (0) | 2011.10.27 |
냅색(Knapsack:배낭) 문제 (0) | 2011.10.27 |
토끼와 거북이 알고리즘 (0) | 2011.10.27 |
XOR 교체 알고리즘 (0) | 2011.10.27 |