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