Hmm
Może, dlatego, że w tak małym fragmencie kodu masz aż dwa poważne błędy, aż się boję pomyśleć ile w całym.
Zobacz sam:
http://ideone.com/gKBVPL30
Ale jedno zgadza się: "... Ale wtopa!"
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ń
to uzyskasz efektywniejsze rozwiązanie.
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
- Kliknij na swoim zgłoszeniu na napis błąd kompilacji i wyświetli się powód błędu - wyjście kompilacji.
- Użyj nowszej wersji kompilatora c++, na SPOJu jest dostępny 6.3.
- Ewentualnie popraw to co powoduje błąd kompilacji i wtedy powinno też pyknąć na starym c++ v 4.3
PS
Zarówno na ideone.com jak i u siebie zapewne użyłeś nowszych kompilatorów (> 4.3) niż na SPOJ'u.
Hey.
Dostaje błędną odpowiedź, chociaż sprawdzałem na różnych testach i według mnie działa poprawnie.
`#include
using namespace std;
int main()
{
int ile,dlugosc;
string zdanie;
cin>>ile;
int tab_male[26]= {};
int tab_duze[26]= {};
char male='a';
char duze='A';
for(int i=0; i<ile; i++)
{
cin.sync();
getline(cin, zdanie);
dlugosc=zdanie.length();
for(int m=97; m<=122; m++)
{
for(int k=0; k<dlugosc; k++)
{
if(zdanie[k]==m) tab_male[m-97]+=1;
}
}
for(int m=65; m<=90; m++)
{
for(int k=0; k<dlugosc; k++)
{
if(zdanie[k]==m) tab_duze[m-65]+=1;
}
}
}
for(int i=0; i<26; i++)
{
if(tab_male[i]==0) ;
else cout<<male<<" "<<tab_male[i]<<endl;
male+=1;
}
for(int i=0; i<26; i++)
{
if(tab_duze[i]==0) ;
else cout<<duze<<" "<<tab_duze[i]<<endl;
duze+=1;
}
return 0;
}
`
Według mnie nie, a jakie było pytanie? http://discuss.spoj.com/t/czy-spoj-forum-pomaga-w-pisaniu-dobrych-popdowiedzi/23397