Wyrazy jednolite/(palindromy?)
Ostatnio zmodyfikowano 2017-05-25 09:04
latajacaryba |
» 2017-05-25 00:10:09 Ale... jak wygodniej? Przecież to prawie żadna różnica, powiem więcej, w przypadku osobnych zmiennych nie martwisz się o indeksy, rozmiar czy wyjście poza tablicę.
@Michal11 Skąd pomysł na taki algorytm, zamiast pętli która sprawdza, czy wyraz1 == wyraz2 oraz pierwsza litera wyrazu == każda inna litera wyrazu? Kwestie wydajnościowe, czy to ja coś źle zrobiłem? :D |
|
ArgonZapan |
» 2017-05-25 02:07:46 #include <fstream> #include <iostream> #include <string>
int main() { std::ifstream file; std::string string[ 2 ]; size_t result = 0; file.open( "file.txt" ); if( file.good() ) { std::cout << "Plik wczytano" << std::endl; while( !file.eof() ) { file >> string[ 0 ] >> string[ 1 ]; if( string[ 0 ] == string[ 1 ] ) { for( size_t i = string[ 0 ].size() - 1; i > 0; i-- ) { if( string[ 0 ].at( 0 ) == string[ 0 ].at( i ) ) { if( i == 1 ) result++; } else break; } } } } else { std::cout << "plik nie został wczytany" << std::endl; } std::cout << "Wynik: " << result << std::endl; getchar(); return 0; } |
|
michal11 |
» 2017-05-25 08:36:43 @Avaris Moim zdaniem jest napisana poprawnie, jedynie ostatni of jest niepotrzebny i trochę źle napisany, ale najszybciej to sprawdzisz poprawiając otwieranie i testując. Btw. int k = 0; for( int i = 0; i < 2000; i++ ) { fin >> anagramy[ k ]; k++; }
nigdzie nie korzystasz ze zmiennej k, w tej pętli nie korzystasz ze zmiennej i, czy zawsze w pliku jest 2000 wyrazów? Jeżeli tak to k jest niepotrzebne, jeżeli nie to powinieneś sprawdzać ile wczytano i później korzystać z tej wiedzy. @latajacaryba Moim zdaniem twój kod jest przekombinowany i nieczytelny ( if( wiersz1[ wiersz1.size() - 1 ][ 0 ] != wiersz1[ wiersz.size() - 1 ][ i ] ) musiałem się chwilę zastanowić żeby to zrozumieć i zorientować się, że jednak nie porównujesz zawsze tylko ostatniej pary). Poza tym porównywanie dwóch stringów ma złożoność liniową, robisz to jako pierwszą instrukcję i to w ife, ja to maksymalnie opóźniam. |
|
Avaris Temat założony przez niniejszego użytkownika |
» 2017-05-25 09:04:19 Wszystko już poprawiłem i działa jak należy. Dziękuję bardzo za pomoc. Pozdrawiam! |
|
1 « 2 » |