Kod:
// b = niz
int pocetak = 0, kraj = 0, duzina = 0, tmp_pocetak = 0, tmp_kraj = 0, tmp_duzina = 0;
for (int i = 0; i < db; i++)
{
if (b[i] == 0)
{
if (tmp_duzina++ == 0) tmp_pocetak = i;
tmp_kraj = i;
}
else
{
if (tmp_duzina > duzina)
{
pocetak = tmp_pocetak;
kraj = tmp_kraj;
}
tmp_duzina = 0;
}
}
Ovo sam napisao na najprimitivniji način na koji sam mogao
Ideja je da čuvaš najveće vrednosti u
pocetak,
kraj i
duzina, i imaš neke pomoćne promenljive koje ćeš da koristiš pri prolasku kroz niz.
for petlja kaže sledeće:
Kod:
ukoliko je trenutni član jednak nuli:
ukoliko je pomoćna dužina jednaka nuli, znači da je to početak niza nula pa postavljam tmp_pocetak na trenutan broj
uvećam dužinu za 1
postavim kraj na trenutan broj
ukoliko nije, ovo je kraj niza ili uopšte nije bio niz:
ako je dužina niza kog sam trenutno izbrojao veća od dužine nekog prethodnog niza:
postavi pravi početak na moj pomoćni početak
postavi pravi kraj na moj pomoćni kraj
postavi pomoćnu dužinu na 0