File tree Expand file tree Collapse file tree 3 files changed +66
-0
lines changed
Expand file tree Collapse file tree 3 files changed +66
-0
lines changed Original file line number Diff line number Diff line change 1+ (*
2+ Finds the length of the Longest Increasing Subsequence.
3+ Dynamic Programming solution in O(N^2)
4+ *)
5+
6+ def main
7+
8+ def lis is int: n as int, arr as int[]
9+
10+ var dp is int [n]
11+ var i j maxLen is int
12+
13+ if n <= 0:
14+ return: 0
15+
16+ (* Initialize dp array *)
17+ i := 0
18+ loop:
19+ if i >= n : break
20+ dp[i] := 1
21+ i := i + 1
22+
23+ (* Begin computing values *)
24+ i := 1
25+ loop:
26+ if i >= n: break
27+ j := 0
28+ loop:
29+ if j >= i: break
30+ if arr[j] < arr[i] and dp[j] + 1 > dp[i]:
31+ dp[i] := dp[j] + 1
32+ j := j + 1
33+ i := i + 1
34+
35+ maxLen := dp[0]
36+ i := 1
37+ loop:
38+ if i >= n: break
39+ if dp[i] > maxLen:
40+ maxLen := dp[i]
41+ i := i + 1
42+
43+ return: maxLen
44+
45+ var n is int
46+ n := readInteger()
47+
48+ var arr is int [n]
49+
50+ (* Populate array *)
51+ var i is int
52+ i := 0
53+ loop:
54+ if i >= n: break
55+ arr[i] := readInteger()
56+ i := i + 1
57+
58+ var len is int
59+ len := lis: n, arr
60+
61+ writeString: "longest inreasing subsequence has length "
62+ writeInteger: len
63+ writeString: "\n"
Original file line number Diff line number Diff line change 1+ 8
2+ 10 9 2 5 3 7 101 18
Original file line number Diff line number Diff line change 1+ longest inreasing subsequence has length 4
You can’t perform that action at this time.
0 commit comments