Bir dizi içerisinde en uzun artan altdiziyi bulmayı amaçlayan bir problemdir. Örneğin
Input:
    {10, 22, 9, 33, 21, 50, 41, 60, 80}
Output:
    6{10, 22, 33, 50, 60, 80}
LCS algoritmasına benzer bir yol izleyeceğiz. Kod anlaşılır durumda, çözüm aşağıdadır.
def lis(arr):
    lis = [1] * len(arr)
    for i in range(1, len(arr)):
        for j in range(i):
            if arr[i] > arr[j] and lis[i] < lis[j] + 1:
                lis[i] = lis[j] + 1
    return max(lis)
if __name__ == '__main__':
    arr = [10, 22, 9, 33, 21, 50, 41, 60]
    print(lis(arr))
Yukarıdaki algoritmanın zaman karmaşıklığı O(n^2)'dir. Algoritma farklı bir yaklaşım ile O(nlogn) karmaşıklık ile çözülebilir. İncelemek için : link
Comments
comments powered by Disqus