Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Return 0;





}

/////////////////////////////////////

int FindKMP (char* text, char* pat)

{

int i, j, lenT, lenP, flag=0;

int d[100];

lenT = strlen(text);

lenP = strlen(pat);

j = 0;

CompF(pat, d);

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

printf(" %d ",d[i]);

printf("\n");

i = 0;j=-1;

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

{

while (j>=0 && text[i]!= pat[j+1])

{

j = d[j];

printf("%s (%d)\n", &text[i-j], j);

}

if (text[i] == pat[j+1]) j++;

if (j+1==lenP)

{

printf ("Ok!\n"); return 1;

}

}

Return 0;

}

#include <stdlib.h>

#include <string.h>

#include <memory.h>

#include <conio.h>

int FindKMP(char* text,char* pat);

Void main()

{

char text[100], pattern[10];

printf("\nInput text:\n");

Gets(text);

Do

{

Fflush(stdin);

printf("\nInput pattern:\n");

Gets(pattern);

if (pattern[0] == '.') break;

if (pattern[0] == '?') {printf("\n%s",text); continue; }

if (FindKMP(text, pattern)) printf("\n TRUE");

else printf("\n FALSE");

} while (1);

}

O(m) F[i]<= F[i-1] – (число операций на i-м шаге) + 1

while len i=2,...,m,

сm, с – константа.


Алгоритм Боуера-Мура

х dх

Hoola–Hoola girls like Hooligans.

Hooliga n

Hooliga n

Hooliga n

Hooliga n

Hooligan

 

#include <string.h>

#include <stdio.h>

#define ASIZE 256

int BM(char* text, char *pattern, int n, int m)

{

Int i;

int d[ASIZE];

//preprocessing...

for (i=0;i<ASIZE;i++) d[i] = m + 1;

for (i=0;i<m;i++) d[pattern[i]] = m - i;

//actual search...

i = 0;

while (i <= n - m)

{

printf("%s\n",&text[i]);

if (memcmp(&text[i],pattern,m) == 0) return i+1;

i = i + d[text[i + m]];

}

Date: 2015-07-27; view: 271; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию