最長遞減子串行

2021-07-23 22:14:44 字數 1000 閱讀 3626

/*

最長遞減子串行

如果array[i]>aarray[j]      第i個數的最長遞減子串行的長度   等於      i+1到最後乙個數的最長遞減子串行的長度  加  1

否則  最長遞減子串行的長度就是1;

最後乙個數的最長遞減子串行的長度等於1,最開始的時候dp[i]的值都為1;

然後倒著求最長遞減子串行

如   3,8,7,5,4,6,3,9

dp[0]=1,dp[1]=1;……dp[7]=1;

3<9 不是遞減  dp[6]=1;

6>3            遞減   dp[5]=dp[6]+1=2;

4>3            遞減   dp[4]=dp[6]+1=2;

5>4            遞減   dp[3]=max(dp[4],dp[6])+1=3;

7>5            遞減   dp[2]=max(dp[3],dp[4],dp[6])+1=4;

8>7            遞減   dp[1]=max(dp[2],dp[3],dp[4],dp[6])+1=5;

沒有比3小的數    dp[0]=1;

*/#include

using namespace std;

int main();

int dp[8];  //dp[i]表示以第i個數開始的遞減子串行的長度

for(int i=0;i<8;i++)

int _max,temp=0;//_max表示最長遞減自序列的長度;   temp表示最長遞減子串行的開始的位置

for(int i=6;i>=0;i--)

}dp[i]=_max+1>dp[i]?_max+1:dp[i];

}_max=dp[0];

for(int i=1;i<8;i++)

}cout<<_max

}return 0;

}

最長遞減子串行

最長遞增子串行算過很多了?那我們這次來求個遞減的試試 第一行為乙個整數t,代表有t組測試資料。每組測試資料為乙個只含有字母和數字的字串 字串長度不超過1000 對於每組測試資料,輸出其最長遞減子串行的長度 要求以ascii碼進行比較且嚴格遞減 程式源 include using namespace ...

求最長遞減子串行

先將乙個字串拷貝到另乙個字串內,然後排序。在和原串找lcs。本題 創新工場。它給的結果為95432,而本 跑出來的結果是94432.都滿足遞減條件。但是題的答案是嚴格遞減的。這裡應該怎麼考慮呢?void printlcs string s1,string s2,vector b elseelse i...

求最長單調遞減子串行

來自 問題描述 求乙個陣列的最長遞減子串行 比如的最長遞減子串行為。思路 這是很經典的乙個問題,用動態規劃解決。假設源陣列為a,定義乙個輔助陣列為b,b i 表示以a i 結尾的最長遞減序列的長度。舉個簡單的例子,如果a i 大於之前的所有元素,那麼b i 1。有了這個輔助陣列 後,可以推出下面這個...