Keresés

Új hozzászólás Aktív témák

  • bpx

    őstag

    válasz gman907 #4083 üzenetére

    az elejétől kezdve egyesével vizsgáld a tárolt értékeket
    ha találsz egy 800 alatti értéket, ott kezdődhet egy lehetséges szakasz - 1000 felettinél meg végződhet (bár ez a feladattól is függ, hogy kell-e mind2 irányba keresni)
    közben tárold el a már megtalált legrövidebb szakaszt (elejét és végét)
    ha a vizsgálat közben találsz egy olyan szakaszt ami jó lehet, azt azzal hasonlítsd össze, ha annál jobb, cseréld le az újjal

    valahogy így (ez sem tökéletes, és csak egy irányba működik):

    {
    ...
    const int N = 100;
    int folyo[N];

    ...

    int start = 0, stop = N-1, akt_start = 0, akt_stop = 0;

    int i = 0;
    while (i < N)
    {
    if (folyo[i] < 800) akt_start = i;
    if (folyo[i] > 1000) akt_stop = i;

    if ((akt_stop - akt_start < stop - start) &&
    (akt_stop > akt_start) && (folyo[akt_start] < 800))
    {
    start = akt_start; stop = akt_stop;
    if (stop-start == 1) break;
    }
    i++;
    }
    cout << "Start: " << start << ", Stop: " << stop << endl;
    ...
    }

Új hozzászólás Aktív témák