Urutan Terpanjang

This commit is contained in:
202410715216 FAMA'ANO HIA 2025-05-16 09:46:21 +07:00
commit c951617d7b

34
Urutan Terpanjang Normal file
View File

@ -0,0 +1,34 @@
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)