From c951617d7b4192d41c487afd1b3fb70343c35a53 Mon Sep 17 00:00:00 2001 From: 202410715216 FAMA'ANO HIA <202410715216@mhs.ubharajaya.ac.id> Date: Fri, 16 May 2025 09:46:21 +0700 Subject: [PATCH] Urutan Terpanjang --- Urutan Terpanjang | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Urutan Terpanjang diff --git a/Urutan Terpanjang b/Urutan Terpanjang new file mode 100644 index 0000000..163b5f0 --- /dev/null +++ b/Urutan Terpanjang @@ -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) + \ No newline at end of file