def longest_increasing_subsequence(arr): n = len(arr) if n == 0: return [] # dp[i] menyimpan panjang LIS yang berakhir di index i dp = [1] * n prev = [-1] * n # untuk melacak jalur LIS for i in range(1, n): for j in range(i): if arr[j] < arr[i] and dp[j] + 1 > dp[i]: dp[i] = dp[j] + 1 prev[i] = j # Cari index dari elemen terakhir pada LIS max_len = max(dp) last_index = dp.index(max_len) # Rekonstruksi LIS lis = [] while last_index != -1: lis.append(arr[last_index]) last_index = prev[last_index] lis.reverse() return lis # Contoh penggunaan data = [10, 22, 9, 33, 21, 50, 41, 60] hasil = longest_increasing_subsequence(data) print("Urutan meningkat terpanjang:", hasil)