Algorytm wyznaczający długość największego podciągu niemalejącego

0

Cześć,

Bardzo proszę o pomoc, a mianowicie wskazanie mi błędu w kodzie. Jest to banalnie proste a ja nie potrafię znaleźć błędu co mnie irytuje.
Dla wygenerowanej tablicy T=(3,1,5,4,8,9,3,3,3,7,5,8,4,3,5) mój kod pokazuje, że długość największego nie malejącego podciągu to 9 co nie jest oczywiście prawdą.
Poniżej wstawiam kod.

function [Lmax] = podciag(T) //funkcja obliczająca długość najdłuższego niemalejącego podciągu z ciągu T
    N=length (T)
    i=1
    Lmax=1 
    L=1
    while i<N do
        if T(i+1)>=T(i) then //instrukcja sprawdzająca czy elementy następujące bezpośrednio po sobie nie maleją
            L=L+1
            if L>Lmax then  //instrukcja sprawdzająca czy wartość bieżąca długości jest większa od wartości długości maksymalnej
                Lmax=L
            end
        end
        i=i+1               //inkrementacja
    end
    disp(Lmax)
endfunction

0

Nie znam tego scilab ale strzelam, że w przypadku gdy kończy się podciąg nie zerujesz sobie zmiennej L.

0

Już wszystko działa, nagle dostałem olśnienia, że w złym miejscu dodałem warunek zerowania zmiennej L. Aktualnie wszystko śmiga.
Działający kod poniżej.

function [Lmax] = podciag(T) //funkcja obliczająca długość najdłuższego niemalejącego podciągu z ciągu T
    N=length (T)
    i=1
    Lmax=1 
    L=1
    while i<N do
        if T(i+1)>=T(i) then //instrukcja sprawdzająca czy elementy następujące bezpośrednio po sobie nie maleją
            L=L+1
            if L>Lmax then  //instrukcja sprawdzająca czy wartość bieżąca długości jest większa od wartości długości maksymalnej
                Lmax=L
            end
        else L=1
        end
        i=i+1               //inkrementacja
    end
endfunction

1 użytkowników online, w tym zalogowanych: 0, gości: 1