https://ideone.com/1hrnBZ40 + jedna, mała, kosmetyczna poprawka == AC http://pl.spoj.com/status/AL_01_02,narbej/23 ID = 20050280 [ale też kilka wcześniejszych moich AC na tej liście z poprzednim twoim kodem + ta sama mała poprawka + różne "zabawy" i testy]
Jakiej poprawki wymaga twój kod? Już napisałem wcześniej, ale trzeba się skupić na odczytaniu podpowiedzi a nie szukać kontrargumentów na drobną krytykę.
PS
I nie musisz nic zmieniać w wypisywaniu [po jednym znaku].
Walczę już z tym zadaniem ponad tydzień i ciągle robię coś źle…
Przeczytałem wszystkie wątki na forum związane z tym zadaniem i jedyne co zdołałem zrobić to przerobić:
pierotną wersję14 kodu, który pokazywał: Przekroczono limit czasu
na takiego potworka: https://ideone.com/15 który pokazuje: Błędna odpowiedź
Bardzo proszę o jakieś wskazówki co robię źle lub porady jak zrobić dobrze.
PS. Czy jedynym/najlepszym rozwiązaniem tego zadania jest kod oparty na wskaźnikach?
Nie
napis.erase - - jest tu zdecydowanie za wolne, a robienie tego w pętli i jeszcze przypisywanie do nowynapis to już następny gwóźdź do trumny.
Piszę o pierwotnej wersji. Potworka nie analizowałem, tylko zerknąłem, bo faktycznie tak tam nagmatwałeś, że przychylam się do twojego zdania - to potworek, ale możliwe, że to działa, a tylko jest jakiś drobny błąd.
Cześć Wam,
Mam trochę inny problem. Sędzia odrzuca mi kod prawdopodobnie ze względu na wyciek pamięci.
Nie potrafię go zlokalizować. Może jakieś wprawne oko mi podpowie. Z góry dzięki
#include<cstdlib>
#include<iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string z;
int dl;
int tab[100];
void sortowanie(int *tab, int n)
{
for (int i=1; i<dl; i++)
{
for (int j=dl-1; j>=1; j--)
{
if (tab[j]>tab[j-1])
{
int bufor;
bufor=tab[j-1];
bufor=0;
tab[j-1]=tab[j];
tab[j]=bufor;
}
}
}
}
int main()
{
int prob;
cin>>prob;
for(int j=1; j<=prob; j++)
{
cin>>z;
dl=z.length();
for (int i=0; i<dl; i++)
{
tab[i]=(int)z[i];
}
sortowanie(tab,dl);
for(int i=0; i<dl; i++)
{
if(tab[i+1]==0)
{
dl=(i);
}
cout<<(char)tab[i];
}
delete[] tab;
}
return 0;
}
Dokładnie, tab jest globalną, statyczną tablicą, więc nigdzie nie wycieknie, a zwalnianien jej [delete] jest błędem.
n < 10^6 i jednocześnie t*n < 10^7 więc gdy t = 10, to n może być <= 10^6
n = 100 to stanowczo za mało.
Dodatkowo nie sprawdzałem, ale Ty powinieneś potestować, czy napewno twój sposób jest poprawny. Sortowanie tutaj raczej nie jest potrzebne a nawet powiedziałbym, że jest tu błędem.
No dobra, naniosłem kilka poprawek. Teraz wyskakuje, że przekroczono limit czasu. No nic. trzeba to przyspieszyć. Pomyślę nad rezygnacją z sortowania, by chyba to przez to.
#include<cstdlib>
#include<iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string z;
int dl;
int tab[1000000];
void sortowanie(int *tab, int n)
{
for (int i=1; i<dl; i++)
{
for (int j=dl-1; j>=1; j--)
{
if (tab[j]>tab[j-1])
{
int bufor;
bufor=tab[j-1];
bufor=0;
tab[j-1]=tab[j];
tab[j]=bufor;
}
}
}
}
int main()
{
int prob;
cin>>prob;
for(int j=1; j<=prob; j++)
{
cin>>z;
dl=z.length();
if (prob>=1000000 ||dl>1000000 || (prob*dl)>10000000 ) break;
for (int i=0; i<dl; i++)
{
tab[i]=(int)z[i];
}
sortowanie(tab,dl);
for(int i=0; i<dl; i++)
{
if(tab[i+1]==0)
{
dl=(i);
}
cout<<(char)tab[i];
}
}
return 0;
}
Jeżeli to jest ta jedna z tych twoich poprawek, to muszę Ci powiedzieć, że jest zupełnie bez sensu. Jej usunięcie oczywiście też nic nie zmieni.
Jeżeli nazywasz funkcję sortowanie, to inni mogą uwieżyć, że tak faktycznie jest i bez zagłębiania się w twój kod, stwierdzić, że sortowanie jest tu zupełnie bez sensu. Może lepiej nazwać tą funkcję np kasowanie_sortowanie(…) - ale dalej to nic nie zmieni.
Jeszcze jest parę błędóœ, ale nie będę ich Ci wytykał, bo jeszcze uwierzysz, że wystarczy tylko je poprawić i już. Nie nie wystarczy.
To zadanie jest w kateorii średnie, więc może powinieneś zacząć od kategorii łatwe lub https://pl.spoj.com/PDSTPROG/4, ale oczywiście to twoja decyzja.
Bardzo proszę o podpowiedź co w moim kodzie jest na tyle wolne, że nie przechodzi on i dostaję przekroczony limit czasu.
https://ideone.com/FvdyxU25
Suggested Topics
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
MBPROB01 - History version in plaintext pl.spoj.com | Zbiór zadań | 6 | 175 | Jul '24 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 96 | Apr 2 |
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 205 | Jun '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 143 | Feb 1 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 147 | Jul '24 |