锯齿是由严格的高低不同的刀片组成,而锯齿数组指的是数组中的相邻元素一高一低严格不同。一个元素和两个不同的元素是齿数较少的锯齿数组,因空集属于任何子集,我们规定,空数组也是锯齿数组。如{2,30,5,7}是锯齿数组,而{2,2,30,8,5,7}不是锯齿数组,但是却有长度为3的子锯齿数组{2,30,8}。编写程序,对输入的整数数组,计算其中包括的最长子锯齿数组的长度。
输入样例1:
第一行,数组长度N,第二行是空格分隔的N个整数。
9 18 45 30 50 10 17 8 25 19
输出样例1:
输出构成的最长的锯齿数组(本例中数据就是锯齿数组,故长度就是9)。
9
输入样例2:
13
18 19 20 45 30 50 10 17 10 9 8 25 19
输出样例2:
输出构成的最长的锯齿数组长度(本例中:20 45 30 50 10 17 10是锯齿数组,故长度是7)。
7
输入样例3:
4
19 19 9 9
输出样例3:
输出构成的最长的子锯齿数组长。
2
#include
int max(int a,int b)
{
if(a return b;
else
return a;
}
int main()
{
int n,flag,up,dw;
int a[1005];
int ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
if(a[i+1] else if (a[i+1]>a[i]) {flag=1;dw=1;up=0;}
else continue;
for(int j=i+1;j<=n;j++)
{
if(a[j] {
up++;
flag=1;
}
else if(a[j]>a[j-1]&&flag==1)
{
dw++;
flag=0;
}else
break;
}
ans=max(ans,dw+up);
}
printf("%d",ans);
return 0;
}



