求最长不降子序列
2015-08-10 11:53
211 查看
试题描述 |
给定一个整数序列a1、a2…an,求这个序列中的一个子序列(不一定连续),使得这个序列中的元素严格递增,并且这个序列最长。 |
输入 |
第一行,一个整数n。 第二行,n个整数,a1、a2...an。 |
输出 |
一行,一个整数,表示你所求的最大长度。 |
输入示例 |
4 1 3 2 4 |
输出示例 |
3 |
其他说明 |
n<=1000,给定的序列中所有元素均为正整数,且不超过10^9。 |
#include<iostream> using namespace std; int n, a[10000001], b[10000001], zd; int main() { scanf("%d", &n); for(int i = 0; i < n; ++i){ scanf("%d", &a[i]); } for(int i = 0; i < n; ++i){ b[ 4000 i] = 1; for(int j = 0; j < i; ++j){ if(a[i] >= a[j]){ b[i] = max(b[i], b[j] + 1); } } zd=max(zd,b[i]); } printf("%d", zd); return 0; }