注意:這裡要求值不同。
先去重,去掉連續一段相同的數字,只保留乙個,儲存在陣列 a 裡,並用陣列 c[i] 表示a[i] 在原始資料中連續出現的個數。
用 f[i] 表示陣列 a 中以a[i] 為結尾的最長上公升子串行的長度是多少;用g[i] 表示陣列a中以a[i]為結尾的最長上公升子串行的個數。
在處理 f[i] 的時候,如果滿足 j
#include using namespace std;
int main()
; int c[1010] = ;
cin>>n;
n++;
a[1] = (1<<31);c[1] = 1; tot = 1;
for (int i=2; i<=n; i++) //輸入,同時去重
else
}int f[1010] = ;
int g[1010] = ;
int pos = 0;
int max = 0;
int ans = 0;
int s = 0;
f[1] = 1; g[1] = 1;
for (int i=2; i<=n; i++)
if (f[j]+1 > max)
}f[i] = max;
if (f[i] > ans)
else if (f[i] == ans)
}cout<
leetcode最長上公升子串行的個數
1.動態規劃 此題和上一題的解法基本一樣 設dp len dp i 表示以nums i 結尾的最長子序列的長度 設count len count i 表示以nums i 結尾的長度為dp i 的序列個數 對於dp i 的求法,仍然是dp i dp j 1中的最大值,不過在這裡需要區分情況 對於i j...
最長上公升子串行
問題描述 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 等等...
最長上公升子串行
最長上公升子串行問題是各類資訊學競賽中的常見題型,也常常用來做介紹動態規劃演算法的引例,筆者接下來將會對poj上出現過的這類題目做乙個總結,並介紹解決lis問題的兩個常用 演算法 n 2 和 nlogn 問題描述 給出乙個序列a1,a2,a3,a4,a5,a6,a7.an,求它的乙個子串行 設為s1...