输入数据
输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N 个整数,这些整数的取值范围都在0 到10000。
输出要求
最长上升子序列的长度。
输入样例
7
1 7 3 5 9 4 8
输出样例
4
/* 课上题目 最长上升子序列 */ # include <iostream> using namespace std; const int MAX = 1e5; int a[MAX + 10]; int len[MAX + 10]; int main() { int i, j, n; cin >> n; for(i = 1;i <= n; i++ ) cin >> a[i]; len[1] = 1; //求以第i 个数为终点的最长上升子序列的长度 for(i = 2; i <= n; i++) { int nTmp = 0; //记录第i 个数左边子序列最大长度 //搜索以第i 个数左边数为终点的最长上升子序列长度 for(j = 1; j < i; j++) { if(a[i] > a[j]) { if(nTmp < len[j]) nTmp = len[j]; } } len[i] = nTmp + 1; } int max = -1; for(i = 1;i <= n; i++) if(max < len[i]) max = len[i]; cout << max << endl; return 0; }
时间: 2024-10-07 14:06:37