#include<stdio.h>
int main()
{
int n,i=0;
scanf("%d",&n);
int num[100001]={0,0,};
while(n-->0)
scanf("%d",&num[i++]);
if(i==1)
{
printf("%d",num[0]);
return 0;
}
int *a=NULL,*a1=NULL;
int l=0,l1=0;
for(n=1;n<i;n++)
{
if(l==0)
a=&(num[n-1]);
if(!a1)
a1=a;
if(num[n]>num[n-1])
++l;
else
{
if(l1<l)
{
l1=l;
a1=a;
}
l=0;
}
}
if(l1<l)
{
l1=l;
a1=a;
}
for(i=0;i<=l1;i++)
{
if(i)
printf(" ");
printf("%d",*(a1+i));
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
typedef int PP;//自己定义的
typedef int E;//自己定义的
/*ElemType是数据结构的书上为了说明问题而用的一个词。它是element type(“元素的类型”)的简化体。
因为数据结构是讨论抽象的数据结构和算法的,一种结构中元素的类型不一定是整型、字符型、浮点型或者
用户自定义类型,为了不重复说明,使用过程中用“elemtype”代表所有可能的数据类型,
简单明了的概括了整体。在算法中,除特别说明外,规定ElemType的默认是int型。
elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型
为了使程序可读性强,并且便于修改,让elem代表多种的数据类型
也就是为int、char等等的数据类型,起了一个别名
在头文件中定义:typedef char elem; 抽象元素类型为char类型,这样定义之后,
下面的程序中elem所定义的元素就是char类型的了
如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现。*/
#define MAXSIZE 100001
typedef struct LNode//节点类型的描述
{
E Data[MAXSIZE];//自己定义的
PP Last;//自己定义的
}LNode;
typedef struct LNode *PtrToNode;
typedef PtrToNode List;
List ReadInput()
{
int N,i;
List L;
L=(List)malloc(sizeof(struct LNode));
L->Last=-1;
scanf("%d",&N);
L->Last=N-1;
for(i=0;i<=L->Last;i++)
{
scanf("%d",&L->Data[i]);
}
return L;
}
void PrintList( List L )
{
int i=0;
printf("%d",L->Data[i]);
for(i=1;i<=L->Last;i++)
{
printf(" %d",L->Data[i]);
}
}
void find(List L)
{
int i;
int Maxlen=0,len=0;
int head=0,Tmphead=0,Tmptail=0,tail=0;
//判断是否递增
while(Tmptail<L->Last)
{
while(L->Data[Tmptail]<L->Data[Tmptail+1])
{
Tmptail++;
}
len=Tmptail-Tmphead+1;
{
if(len>Maxlen)
{
Maxlen=len;
head=Tmphead;
tail=Tmptail;
}
else
{
Tmphead=Tmptail+1;
Tmptail=Tmphead;
}
}
}
printf("%d",L->Data[head]);
for(i=head+1;i<=tail;i++)
{
printf(" %d",L->Data[i]);
}
}
int main()
{
List L;
int i;
L=ReadInput();
//PrintList(L);
//printf("\n");
find(L);
system("pause");//system("PAUSE") 是暂停的意思,等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果
return 0;
}
/* #include<stdio.h>
int main()
{
int n,a[100000]={0},b[100000]={0},*q,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int *p,j,k=0,max=0;
for(i=0;i<n;i++)//输入的数组,原样输出要用指针
{
printf("%d",*p);
p++;
}*/
//,,p++
/* for(i=0;i<n;i++)
{
while(a[i+1]>a[i])
{
k++;//计数,记录总共有几个是连续增大的
i++;
}
if(k>max)
{
max=k;
//printf("%d",*p);
//break; //记录下最大到多少号
j=i;
}
}
//printf("\n%d",max);
if(max!=0)
{
p=&a;
//printf("\n%d",*(p+j));
q=&b;
while(*(p+j)>*(p+j-1))
{
//printf(" %d",*(p+j-1));
p--;
//max--;
}
printf("%d",*(p+j));
*q=*(p+j);
q++;
while(*(p+j)<*(p+j+1))
{
printf(" %d",*(p+j+1));
*q=*(p+j+1);
p++;
q++;
}
int y=0;printf("%d",b[y]);
while(b[y])
{
y++;
printf(" %d",b[y]);
}
}
*/
//printf(" %d",*(p+j));
/*
q=&b;
*/
//printf(" %d",*p);/**/
// printf("\n%d",*(p-1));
/* printf("\n%d",*(p-max+1));
p--;
for(i=1;i<max;i++)
{
printf(" %d",*p);
p--;
}
return 0;
}
*/