題目描述
有n個互不相同的整數an
若存在一個數列bm
其中對於任何1 < i < m
滿足bi < bi+1 且 abi < abi+1
則稱abn為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 }