题意:
给出一组数据
求最大递增子序列的长度
思路:
dp[i] = max(dp[i], dp[j]+1);
dp[i] 存的是第i个时,最大长度,一直存的是最大长度
如果后面的数比前面的大,就判定
每次i值变化的时候,j都要从头开始遍历到i-1
遍历各种情况
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1010;
int a[maxn];
int dp[maxn];
int main () {
int n;
while(cin >> n) {
for(int i = 1; i <= n; i++)
cin >> a[i], dp[i] = 1;
for(int i = 2; i <= n; i++) {
for(int j = 1; j < i; j++) {
if(a[i] > a[j]) {
dp[i] = max(dp[i], dp[j]+1);
}
}
}
int ans = 1;
for(int i = 1; i <= n; i++) {
if(ans < dp[i])
ans = dp[i];//找出最大的dp[i]
}
cout << ans << endl;
}
return 0;
}