你的任务,就是对于给定的序列,求出最长上升子序列的长度。
7 1 7 3 5 9 4 8
思路: a数组 盛放 输入的数字 , t 数组 是状态数组 , 以第 i 的数 做结尾的 一串数字 的最长上升子序列 有两个条件: 一是,第i个数字 比 前边的那个数字大,二是 找到 比它小的数字 的 最大的状态 ,然后加一 就是 第i的状态 。
代码:#if 0 #include<iostream> using namespace std; int main() { int a[100] ,n ; cin >> n; for(int i = 1 ;i <= n; i++) cin >> a[i] ; int t[100]={0} ; t[1] = 1 ; int max=0,maxend=0; for(int i=2 ;i <=n ;i++) { max =0; // 细节 for(int j=1; j< i; j++) { if(a[i]>a[j]) if( max<t[j] ) max = t[j] ; } t[i] =max +1 ; } for(int i= 1; i<= n;i ++) if(maxend<t[i]) maxend = t[i] ; cout << maxend <<endl; } #endif
1808



被折叠的 条评论
为什么被折叠?



