求最大遞減子串行問題

2021-05-28 06:36:46 字數 685 閱讀 7960

這是昨天晚上創新工場的一道筆試題:

求乙個陣列的最長遞減子串行,例如的最長遞減子串行為

思路:這是很經典的乙個問題,用動態規劃解決。假設源陣列為a,定義乙個輔助陣列為b,b[i]表示以a[i]結尾的最長遞減序列的長度。舉個簡單的例子,如果a[i]大於之前的所有元素,那麼b[i] = 1。

有了這個輔助陣列後,可以推出下面這個遞推式子。b[i] = max

}printf("a[%d]=%d ", k, a[k]);//從第乙個滿足條件的元素開始列印

//函式功能 : 乙個陣列的最長遞減子串行   

//函式引數 : a指向源陣列,len表示陣列長度   

//返回值 :   無 

void find_mss(int *a, int len)

}}    

}print(a, b, maxi);

}int main()

;int aa=;

find_mss(a, 8);

printf("\n");

find_mss(aa, 9);

printf("\n");

return 0;

} 執行結果:

a[0]=9 a[4]=5 a[5]=4 a[6]=3 a[7]=2

a[0]=9 a[1]=8 a[2]=6 a[5]=5 a[6]=4 a[7]=2 a[8]=1

求最長遞減子串行

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

求最長單調遞減子串行

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

最長遞減子串行

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