#include<stdio.h>
int main(){
int n,d=1,f=0; //用d来记录子序列长度
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int c=0;c<n;c++){
int m=0,k=0;
for(int b=c;b<n-1;b++)
{
if((a[b]<a[b+1])&&(m==0))d++;
else if((a[b]>=a[b+1])&&(m==1))break;
else if((a[b]>=a[b+1])&&(m==0)&&(b!=c)){d++;m=1;k=a[b];} //子序列的第一个元素比较特殊,所以我分了类,这是当a[b]>=a[b+1]时,a[b]不为子序列第一个元素的情况
else if((a[b]>=a[b+1])&&(b==c)){d++;m=1;k=0;} //这是当a[b]>=a[b+1]时,a[b]为子序列第一个元素的情况
else if((a[b]<a[b+1])&&(m==1)&&(a[b+1]<=k))break;
else if((a[b]<a[b+1])&&(m==1)&&(a[b+1]>k)){d++;k=a[b];}
}if(d>f)f=d; 最大的子序列长度即为想要的值
d=1; 子循环结束后d初始化为1
}
printf("%d",f);
return 0;
}
int main(){
int n,d=1,f=0; //用d来记录子序列长度
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int c=0;c<n;c++){
int m=0,k=0;
for(int b=c;b<n-1;b++)
{
if((a[b]<a[b+1])&&(m==0))d++;
else if((a[b]>=a[b+1])&&(m==1))break;
else if((a[b]>=a[b+1])&&(m==0)&&(b!=c)){d++;m=1;k=a[b];} //子序列的第一个元素比较特殊,所以我分了类,这是当a[b]>=a[b+1]时,a[b]不为子序列第一个元素的情况
else if((a[b]>=a[b+1])&&(b==c)){d++;m=1;k=0;} //这是当a[b]>=a[b+1]时,a[b]为子序列第一个元素的情况
else if((a[b]<a[b+1])&&(m==1)&&(a[b+1]<=k))break;
else if((a[b]<a[b+1])&&(m==1)&&(a[b+1]>k)){d++;k=a[b];}
}if(d>f)f=d; 最大的子序列长度即为想要的值
d=1; 子循环结束后d初始化为1
}
printf("%d",f);
return 0;
}
全部评论
(0) 回帖