[Java] střídání čísel v poli
Zrovna s kámošem z vyššího ročníku se snažím vyřešit jeden program.
Máte pole třeba s 30 různými jednocifernými čísly a chcete získat největší úsek (tedy index začátku a konce), kde se střídají sudá a lichá čísla za sebou.
Pustil jsem se do toho s několika cykly v sobě, ale nakonec jsem to vzdal, protože jsem si uvědomil, že jsem to psal pro úseky, co začínají jenom na sudé číslo (a ještě blbě).
Mohli byste prosím poradit jakou cestou se mám vydat či nejlépe napsat danou část kódu (ono vlastně kromě vytvoření pole a zobrazení indexů úseku je to (bude) asi největší část programu :rolleyes:)
Re: [Java] střídání čísel v poli
Citace:
Původně odeslal
Adolfik
Zrovna s kámošem z vyššího ročníku se snažím vyřešit jeden program.
Máte pole třeba s 30 různými jednocifernými čísly a chcete získat největší úsek (tedy index začátku a konce), kde se střídají sudá a lichá čísla za sebou.
Pustil jsem se do toho s několika cykly v sobě, ale nakonec jsem to vzdal, protože jsem si uvědomil, že jsem to psal pro úseky, co začínají jenom na sudé číslo (a ještě blbě).
Mohli byste prosím poradit jakou cestou se mám vydat či nejlépe napsat danou část kódu (ono vlastně kromě vytvoření pole a zobrazení indexů úseku je to (bude) asi největší část programu :rolleyes:)
detekcni podminka na stridani liche-sude (xor) vuci predchazejicimu prvku
tou podminkou odstartovat index pocatku a pokracovani nasledujiciho useku-budeli
index0 a delku0 useku mit vyhledavaci a pak jeste jednou (indexMAX, delkaMAX, vychozi 0 a 0) kam se bude zapisovat nejdelsi nalezeny, cili najdu usek, jeli delsi prepisu
Re: [Java] střídání čísel v poli
To Adolfik: Myslim, ze si to moc komplikujes. Melo by stacit ty prvky jednoduse sekvencne projit a znamenat si prozatim nejlepsi nalezenou posloupnost. Tzn. neco jako:
Kód:
int cisla[] = { ... };
int index_aktualni_prvni = 0;
int index_nejlepsi_prvni = 0;
int index_nejlepsi_posledni = 0;
for (int index = 0; index < cisla.length - 1; index++)
{
if (((cisla[index] + cisla[index + 1]) % 2) > 0)
{
if ((index + 1 - index_aktualni_prvni) > (index_nejlepsi_posledni - index_nejlepsi_prvni))
{
index_nejlepsi_prvni = index_aktualni_prvni;
index_nejlepsi_posledni = index + 1;
}
}
else
{
index_aktualni_prvni = index + 1;
}
}
System.out.println("Index prvniho cisla: " + index_nejlepsi_prvni);
System.out.println("Index poslednihgo cisla: " + index_nejlepsi_posledni);