動態規劃法求解最長遞增子串行問題

2021-10-04 12:39:47 字數 514 閱讀 8938

給定乙個無序的整數序列a[0…n-1],求其中最長遞增子串行的長度。

例如,a=,n=9,其最長遞增子串行為,結果為5。

設計動態規劃陣列為一維陣列dp,dp[i]表示a[0…i]中以a[i]結尾的最長遞增子串行的長度。對應的狀態轉移方程如下:

求出dp後,其中最大元素即為所求。

int a=

;int n =

sizeof

(a)/

sizeof

(a[0])

;int ans =0;

int dp[maxn]

;void

solve

(int a,

int n)

} ans = dp[0]

;for

(i =

1; i < n; i++

) ans =

max(ans, dp[i]);

}

solve()演算法中含兩重迴圈,時間複雜度為o(n2)。

使用動態規劃求解最長遞增子串行(LIS)

給定乙個數列,數列中的數是未排序 可重複的,求其最長遞增子串行 lis 的長度。如數列1 7 3 5 9 4 8其lis為 1 3 5 9 或1 3 5 8 則輸出其長度4。先將數列存入陣列array中 然後把array n 的lis長度存入陣列result n 中,如在數列1 7 3 5 9 4 ...

動態規劃求解最長遞增子串行的長度

一,問題描述 給定乙個序列,求解它的最長 遞增 子串行 的長度。比如 arr 的最長遞增子串行長度為4。即為 1,4,5,9 二,演算法分析 有兩種方式來求解,一種是轉化為lcs問題。即,首先對陣列排序,將排序後的結果儲存在輔助陣列中。排序時間複雜度o nlogn 排序後的陣列與原陣列組成了lcs ...

動態規劃求解最長遞增子串行的長度

一,問題描述 給定乙個序列,求解它的最長 遞增 子串行 的長度。比如 arr 的最長遞增子串行長度為4。即為 1,4,5,9 二,演算法分析 有兩種方式來求解,一種是轉化為lcs問題。即,首先對陣列排序,將排序後的結果儲存在輔助陣列中。排序時間複雜度o nlogn 排序後的陣列與原陣列組成了lcs ...