Faktycznie, danych w tym zadaniu jest jak kot napłakał i uzyskanie czasu powyżej 0.00 w c/c++ tego zadania jest chyba niewykonalne. Dużo łatwiej w innych językach: http://pl.spoj.com/ranks/JZLICZ/start=384012 i poniżej.
PS Dziwna metoda, w sensie bardzo nieefektywna, a 0.00 bo małe testy.
Faktycznie musi być tych danych bardzo mało. Metoda wydawała mi się efektywna z tego względu że po każdym przejściu pętli, string do przeszukiwania będzie coraz mniejszy. W sensie: Znajdź 'a', licz ile razy wystąpi 'a', usuń wszystkie 'a' ze stringa, wypisz ile razy wystąpił 'a'; String mniejszy o ilość wystąpień 'a' Znajdź 'b' licz ile razy wystąpi 'b', usuń wszystkie 'b' ze stringa, wypisz ile razy wystąpił 'b'; String mniejszy o ilość wystąpień 'b' itd pętla przejdzie tyle razy ile szukamy literek. (około 50) Dopiero zaczynam zabawę z programowaniem stąd pewnie błędne założenia efektywniejszy sposób na rozwiązanie tego zadania będzie jaki ?
Każdy inny? Zadanie nie polega na znalezieniu szukanej literki, policzeniu jej i wypisaniu poprawionego tekstu, a Ty mniej więcej to robisz. Jeżeli więc zrobisz tylko jedno z poniższych [lub wszystko]:
zrezygnujesz z kasowania
zrezygnujesz z wyszukiwania - metodą find - za każdym razem od początku stringa
tylko jednokrotnie przejście stringu i dodawanie wystąpienia danej literki do tablicy wystąpień
Witam Mam problem z tym zadankiem, a konkretniej z vectorami. Sprawdzalam krok po kroku gdzie jest blad i zaznaczylam ten fragment, jakby ktos wiedzial o co chodzi to bylabym bardzo wdzieczna za kazda odpowiedz PS Nie zwracajcie uwagi na to, ze najpierw wyswietlane sa duze litery - jeszcze nie napisalam tego w kodzie, zajme sie tym potem. PS2 Kod jest w trybie roboczym, wiec moze nie byc do konca jasny. Potem ladnie go streszcze i bedzie cacy Moj kod: https://ideone.com/9iB1EG22
Cześć. Mam mały problem z tym zadankiem, sprawdzałem na wielu testach, wszystko w porządku. Na ideone też jest ok. Spoj mi nie przyjmuje wyrzuca błąd kompilacji. Nie ma problemu, moge to zrobić w inny sposób, jednak jestem ciekaw, dlaczego to nie chce pyknąć, za wszystkie uwagi byłbym bardzo wdzięczny http://ideone.com/5SJVSh66
Dzięki śliczne, działa, wystarczyło wybrać 6.3. Z tym błędem kompilacji też już wcześniej próbwałem, ale nie do końca rozumiałem co mi wyskakiwało, za małą wiedze mam na ten moment.
Po prostu jej nie używaj. Zamiast getch() użyj getchar() i pamiętaj, że w unix, a więc na spoju i ideone enter = 10, a nie 13.
getchar() jest w bibliotece standartowej [cstdio ~= stdio.h]
Ideone11 Skorzystałem z rady, ale na SPOJu wyskakuje mi błędna odpowiedź, a na Ideone przekroczenie limitu czasu, mimo, że na komputerze kompiluje się w ułamku sekundy Czy lista to w tym wypadku zły pojemnik na dane? Powinienem zmienić koncepcję?
Jeżeli zdanie to zinterpretuję jako ukrytą implikację typu “jeżeli u mnie kompiluje się (w ułamku sekundy) to nie może być, że na SPOJu mam WA i nie może być, że na Ideone mam TLE” to na prawdę nie rozumiem o co Ci chodzi.
Kompilować się kompiluje. I nie działa. Tyle. Na pocieszenie: to dotyczy ponad 90% kodów, jakie kiedykolwiek zostały stworzone
Formalnie możesz używać nawet drzewa czerwono-czarnego, mapy itd. SPOJ puści największą bzdurę, jak już się przekonałeś dotyczy to także listy
Tak. Nie wiem skąd pomysł na użycie listy chyba, że po prostu w celu edukacyjnym i faktycznie wiesz co robisz.
Czemu lista jest złym pomysłem w tym przypadku? Pytam poważnie i prosiłbym o uzasadnienie, bo taka lista wydawała mi się lepszym pomysłem niż stworzenie dużej tablicy i marnowanie pamięci. Jeśli nie lista, to w takim razie jaki inny pojemnik na dane?
Nie bardzo też rozumiem mechanizmu działania Ideone. Jeśli limit czasu to 5s, to czy przy tak małym programie i jednym teście jest możliwe, abym przekroczył ten czas tylko ze względu na użycie listy jako pojemnika na dane?
Jeżeli Twoim celem jest oszczędzenie pamięci to oczywiście zmienia postać rzeczy i może nawet lista jest dobrym rozwiązaniem (nie chce mi się nad tym myśleć). Nad czym myśleć? Nie wiem jak Twoje rozumowanie ma się do wady listy, że każdy element listy ciągnie więcej pamięci niż każdy element tablicy Mam też pewną obawę (z tego co widzę w kodzie całkiem zasadną), że w swoim rozwiązaniu używasz w cholerę pamięci w porównaniu ze zwykłą tablicą około 50-elementową Pomijam już kwestię sortowania, które nie jest potrzebne w przypadku tablicy, a kosztuje czasowo dość wiele.
Powiem tak - w celach edukacyjnych można wiele. Sam pamiętam zadanie, nad którym nie chciało mi się myśleć więc kilka z możliwych rozwiązań zabrałem z neta a resztę liczyłem na bieżąco w trakcie wykonywania programu Nota bene kultowa technika w konkursach algorytmicznych, której nazwę możesz sobie wygooglować, a która jest kluczem do rozwiązania niektórych zadań na SPOJu, a rozwiązanie innych ułatwia.
W celach dydaktycznych możesz spróbować ogarnąć to zadanie na mapach/setach. Wybór właściwego kontenera z wymienionych zostawiam Tobie.
Można stworzyć nawet mniejszy o tym samym działaniu. Program dostaje TLE ponieważ najpewniej nie wychodzisz z pętli i wykonujesz go w nieskończoność.