Szukanie ciągu elementów w innej tablicy
Ostatnio zmodyfikowano 2015-11-23 15:06
maciek1o3s Temat założony przez niniejszego użytkownika |
Szukanie ciągu elementów w innej tablicy » 2015-11-22 20:34:36 #include <cstdlib> #include <iostream> using namespace std;
int table2[ 3 ] = { 6, 9, 1 };
int fun( int tab[], int n ) { int k = 0; int i = 0; int wynik; if( tab[ i ] != table2[ k ] ) { i++; fun( int tab[], int n ); } else { k++ wynik = fun( int tab[], int n ); } return wynik; }
int main( int argc, char * argv[] ) { int table1[ 11 ] = { 0, 1, 2, 3, 4, 6, 9, 1, 8, 9, 10 }; fun( table1, 11 ); cout << "Szukany ciag elementow zaczyna sie od i = " << fun( table1, 11 ) << endl; system( "PAUSE " ); return 0; } Prosiłbym o sugestie co tu poprawić. Mam problem z użyciem rekurencji. Nie wiem jak poprawnie sformułować to else. Chcę znaleźć w tabeli 1 ciąg elementów z tabeli 2giej, a więc 6 9 1 i podać od którego i w głównej tabeli się on zaczyna |
|
michal11 |
» 2015-11-22 21:20:34 Nie masz warunku stop, nie ważne co się stanie zawsze twoja funkcja wywoła się jeszcze raz. Najlepiej chyba skorzystać z tego algorytmu. Albo bardziej ogólnie |
|
bombatom69 |
» 2015-11-23 15:06:03 Nie ma większego znaczenia czy szukasz ciągu znaków w innym ciągu znaków, czy szukasz ciągu liczb w innym ciągu liczb. Dlatego powinieneś zastosować jeden z algorytmów wyszukiwania wzorca.
Możesz zrobić to tzw. algorytmem trywialnym, ale jeśli masz aspiracje poznać coś ciekawszego, to masz algorytmy morrisa-pratta, knutha-morrisa-pratta i boyera-moora. Jest też algorytm oparty na automacie skończonym. |
|
« 1 » |