패턴 찾기 알고리즘

it/알고리즘 2015. 1. 6. 18:20 Posted by 하얀나다

패턴찾기 알고리즘임. C로 작성함

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

 

#define Text 1000

#define Pattern1 5

#define Pattern2 10

 

int brute(char *T, char *P,int N,int M)

{

int i,j;

for(i = 0; i<= N-M; i++)

{

for(j = 0; j < M ; j++){

if(*(P+j) != *(T+i+j)) break;

}

if( j == M ) return i+1;

}

return -1;

}

 

void main(void)

{

int i,k;

char arr[Text] = {0},patt1[Pattern1] = {0},patt2[Pattern2] = {0};

srand(time(NULL));

for(i = 0 ; i<Text; i++)

*(arr + i) = rand() % 11 +97;

for(i = 0 ; i<Pattern1; i++)

*(patt1 + i) = rand() % 11 + 97;

for(i = 0 ; i<Pattern2; i++)

*(patt2 + i) = rand() % 11 + 97;

 

for(i = 0 ; i<Text; i++)

printf("%2c",*(arr + i));

printf("\n");

for(i = 0 ; i<Pattern1; i++)

printf("%2c",*(patt1 + i));

printf("\n이것은 직선적 알고리즘입니다.\n");

k = brute(arr, patt1,Text,Pattern1);

if( k == -1)

printf("찾는데 실패했습니다.");

else

printf("패턴은 텍스트의 %d번째 문자부터 나타남",k);

 

printf("\n");

 

for(i = 0 ; i<Pattern2; i++)

printf("%2c",*(patt2 + i));

 

printf("\n이것은 직선적 알고리즘입니다.\n");

k = brute(arr, patt2,Text,Pattern2);

if( k == -1)

printf("찾는데 실패했습니다.");

else

printf("패턴은 텍스트의 %d번째 문자부터 나타남",k);

 

printf("\n");

 

return;

}

'it > 알고리즘' 카테고리의 다른 글

백준 4485 녹색 옷 입은 애가 젤다  (0) 2018.11.24
스택을 이용한 문제  (0) 2015.01.06
힙을 이용한 트리  (0) 2015.01.06
해시테이블  (0) 2015.01.06
정렬 비교  (0) 2015.01.06