![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 0 Dołączył: 5.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
prosze o pomoc w kwestii dodania możliwosci w tym algorytmie MP
http://www.i-lo.tarnow.pl/edu/inf/utils/ro...pages/ol004.php Kod #include <iostream> using namespace std; const int N = 70; // długość łańcucha c1 const int M = 3; // długość łańcucha c2 - wzorzec main() { char c1[N+1], c2[M+1]; int i,b,p,pi[M+1]; srand((unsigned)time(NULL)); // Generujemy łańcuch do przeszukania for(i = 0; i < N; i++) c1[i] = 65 + rand() % 4; c1[N] = '\'; // Generujemy wzorzec for(i = 0; i < M; i++) c2[i] = 65 + rand() % 4; c2[M] = '\'; // Wyświetlamy dane wejściowe: cout << "s2 = " << c2 << "\n\ns1 = " << c1 << "\n "; // Obliczamy tablicę pi[] pi[0] = b = -1; for(i = 0; i < M; i++) { while((b > -1) && (c2[b] != c2[i])) b = pi[b]; pi[i+1] = ++b; } // Szukamy pozycji wzorca algorytmem MP b = 0; p = -1; for(i = 0; i <= N - 1; i++) { while((b > -1) && (c2[b] != c1[i])) b = pi[b]; if(++b < M) continue; p = i - b + 1; break; } // Jeśli znaleziono wzorzec w łańcuchu, wyświetlamy go if(p >= 0) { for(i = 0; i < p; i++) cout << " "; cout << c2; } else cout << "Wzorzec nie znaleziony."; cout << endl << endl; system("pause"); } znaku * we wzorcu który zastępuje dowolny inny znak.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:22 |