Urutan Terpanjang
This commit is contained in:
commit
c951617d7b
34
Urutan Terpanjang
Normal file
34
Urutan Terpanjang
Normal 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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user