I’m trying to solve a longest-increasing subsequence problem using a greedy approach in Python. I’m using the algorithm outlined from this reference. I’ve written some code to find the longest increasing subsequence of a given array but I’m getting the wrong result. I’m not sure if my code is incorrect or if I’m missing something about the algorithm. Here’s my code:
def LIS(arr):
n = len(arr)
lis = [1] * n
# Compute optimized LIS values in bottom up manner
for i in range (1 , n):
for j in range(0 , i):
if arr[i] > arr[j] and lis[i]< lis[j] + 1 :
lis[i] = lis[j]+1
# Initialize maximum to 0 to get the maximum of all
# LIS
maximum = 0
# Pick maximum of all LIS values
for i in range(n):
maximum = max(maximum , lis[i])
return maximum
# Test Cases
arr = [10, 22, 9, 33, 21, 50, 41, 60]
print(LIS(arr))
Any help would be much appreciated! Thanks!