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