給定乙個無序的整數序列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 ...