最长连续上升子序列:
#include<stdio.h>
int main()
{
int a[100],dp[100],i,j,n,x=0,max;
scanf("%d",&n);
for(i=0;i<n;i++) //输入数组,并初始化dp的值;
{
scanf("%d",&a[i]);
dp[i]=1;
}
for(i=1;i<n;i++) //把每个数与前面的数进行比较;
{
for(j=x;j<i;j++) //比较上次降序的数到i;把到第i个数有几个连续上升序列记录在dp[i]中;
{
if(a[i]>a[j])
{
if(dp[j]+1>dp[i])
dp[i]=dp[j]+1;
else
dp[i]=dp[i];
}
if(a[i]<a[j]) x=i; //如果降序,则把i的值改为这个数;
}
if(i==1) max=dp[i]; //选出dp中的最大值;
else
if(max<dp[i])
max=dp[i];
}
printf(“%d”,max);
}