最長遞增子串行B(完美2017實習生)

2021-07-14 10:07:51 字數 1242 閱讀 5146

1、題目:

給定乙個長度為n的陣列,找出乙個最長的單調自增子序列(不一定連續,但是順序不能亂)

例如:給定乙個長度為8的陣列a,則其最長的單調遞增子串行為,長度為6.

輸入描述:

第一行包含乙個整數t,代表測試資料組數。

對於每組測試資料:

n-陣列的長度

a1 a2 … an (需要計算的陣列)

保證:

1<=n<=3000,0<=ai<=max_int.

輸出描述:

對於每組資料,輸出乙個整數序列,代表最長遞增子串行。

若有多組最長上公升子串行,輸出第一組。

保證:1<=t<=20,1<=n<=3000,0<=ai<=max_int.

輸入例子:

2 7

89 256 78 1 46 78 8

5 6 4 8 2 17

輸出例子:

1 46 78

6 8 17

2、**:

#include 

#include

using

namespace

std;

void getlongb(const

vector

v, vector

*vresult)

}big[i++] = max;

}int max = 0;

vector

::const_iterator itermax;

for (auto iter = big.cbegin();iter != big.cend();++iter)

}//回溯

auto iterbeg = big.cbegin();

vresult->push_back(v[itermax - iterbeg]);

for (auto iter = iterbeg;iter !=itermax&&max!=0;)

else

}}int main()

v[i] = v1;

}vector

vresult;

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

}vresult.clear();

cout

<< endl;

}// system("pause");

return

0;}

3、總結:

動態規劃回溯問題。

最長遞增子串行B

牛客網 完美世界筆試原題 給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為8的陣列a,則其最長的單調遞增子串行為,長度為6.輸入描述 第一行包含乙個整數t,代表測試資料組數。對於每組測試資料 n 陣列的長度 a1 a2 an 需要計算的陣列 保證...

最長遞增子串行

這是微軟實習生筆試遇到的,題意 求乙個陣列中最長遞增子串行的長度。要求選擇該題最好演算法的時間複雜度和空間複雜度。答案 時間複雜度o nlgn 空間複雜度o n 這題明顯用動態規劃來解。假設在目標陣列array 的前i個元素中,以array i 元素為最大元素的遞增子串行的長度是lis i 那麼 遞...

最長遞增子串行

最長遞增子串行又叫做最長上公升子串行 子串行,正如lcs一樣,元素不一定要求連續。本節討論實現三種常見方法,主要是練手。題 求乙個一維陣列arr i 中的最長遞增子串行的長度,如在序列1,1,2,3,4,5,6,7中,最長遞增子串行長度為4,可以是1,2,4,6,也可以是 1,2,4,6。方法一 d...