41561
|
1 |
-------------------------------------------------------------------------------
|
|
2 |
-- Longest increasing subsequence of an array of integers
|
|
3 |
-------------------------------------------------------------------------------
|
|
4 |
|
|
5 |
package Liseq is
|
|
6 |
|
|
7 |
type Vector is array (Integer range <>) of Integer;
|
|
8 |
|
|
9 |
--# function Liseq_prfx(A: Vector; i: Integer) return Integer;
|
|
10 |
--# function Liseq_ends_at(A: Vector; i: Integer) return Integer;
|
|
11 |
--# function Max_ext(A: Vector; i, j: Integer) return Integer;
|
|
12 |
|
|
13 |
procedure Liseq_length(A: in Vector; L: in out Vector; maxi: out Integer);
|
|
14 |
--# derives maxi, L from A, L;
|
|
15 |
--# pre A'First = 0 and L'First = 0 and A'Last = L'Last and A'Last < Integer'Last;
|
|
16 |
--# post maxi = Liseq_prfx (A, A'Last+1);
|
|
17 |
|
|
18 |
end Liseq;
|