/*
最長遞減子串行
如果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。有了這個輔助陣列 後,可以推出下面這個...最長遞減子串行
求最長遞減子串行
求最長單調遞減子串行