Longest increasing subsequence: Difference between revisions

Content added Content deleted
(added c++)
Line 822: Line 822:
[5] => 15
[5] => 15
)</pre>
)</pre>


=={{header|Prolog}}==
Works with SWI-Prolog version 6.4.1<br>
Naïve implementation.


<lang prolog>lis(In, Out) :-
% we asl Prolog to find the longest sequence
aggregate(max(N,Is), (one_is(In, [], Is), length(Is, N)), max(_, Res)),
reverse(Res, Out).


% we describe the way to find increasing subsequence
one_is([], Current, Current).


one_is([H | T], Current, Final) :-
( Current = [], one_is(T, [H], Final));
( Current = [H1 | _], H1 < H, one_is(T, [H | Current], Final));
one_is(T, Current, Final).
</lang>
Prolog finds the first longest subsequence
<pre> ?- lis([0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15], Out).
Out = [0,4,6,9,13,15].

?- lis([3,2,6,4,5,1], Out).
Out = [3,4,5].
</pre>


=={{header|Python}}==
=={{header|Python}}==