Jump to content

Longest increasing subsequence: Difference between revisions

No edit summary
Line 93:
 
procedure lis(A)
ptr := [[A[1]]] | fail
every (put(pt := [], [v := !A]), p := !pt) do
r := pt[1]
every v := !A doif put(p, p[-1] < v) then {
every if *p :=> !pt*r dothen {r := p
if put(p, p[-1] < v) then {
if *p > *r then r := p
}
else p[-1] := (p[-2] < v)
}
putelse p[-1] := (pt,p[v-2] < v)
}
return r
end</lang>
Cookies help us deliver our services. By using our services, you agree to our use of cookies.