严格上升和非严格上升的
#include <iostream>
using namespace std;
int main()
{
int i, j, n, max;
int a[1001];
int d[1001]; /* d[i]表示以a[i]结尾的最长子序列长度 */
while(cin >> n)
{
for (i = 1; i <= n; i++)
cin >> a[i];
max = 0;
d[1]=1;
for (i = 2; i <= n; i++)
{
d[i] = 1;
for (j = 1; j <=i-1; j++)
{
if (a[j] < a[i] && d[i] < d[j] + 1)//如果a[j]<=a[i]的话就不是严格单调上升的,而是非降序的了
{
d[i] = d[j] + 1;
}
}
if (d[i] > max)
max = d[i];
}
cout << max << endl;
}
return 0;
}