1. 程式人生 > >最長遞增子序列(動態規劃)

最長遞增子序列(動態規劃)

acc mage ios 數據 mes eth 遞增 整數 inpu

題目描述 有n個互不相同的整數an
若存在一個數列bm
其中對於任何1 < i < m
滿足bi < bi+1 且 abi < abi+1
則稱abn為an的一個遞增子序列
試求出給定序列的最長遞增子序列長度

程序輸入說明

本題由多組數據組成,以EOF結束

程序輸出說明

對於每組數據輸出一行結果,代表最長遞增序列長度

程序輸入樣例

3
1 2 3
10
3 18 7 14 10 12 23 41 16 24

程序輸出樣例

3
6
 1 #include<iostream>
 2
#include<cstdio> 3 using namespace std; 4 int a[7010],b[7010]; 5 int main(){ 6 int n; 7 while(cin>>n){ 8 for(int i=1;i<=n;i++) 9 cin>>a[i]; 10 int max=0; 11 b[1]=1; 12 for(int i=2;i<=n;i++){ 13 int k=0; 14 for
(int j=1;j<i;j++){ 15 if(a[j]<a[i]&&k<b[j]) 16 k=b[j]; 17 } 18 b[i]=k+1; 19 if(max<b[i]) 20 max=b[i]; 21 } 22 cout<<max<<endl; 23 } 24 return 0; 25 }

技術分享圖片

最長遞增子序列(動態規劃)