SZU : A11 Sequence

Description

We are given a integer sequence, your job is find the length of the longest contiguous subsequence that is strictly increasing or strictly decreasing.

Input

  • First number T (1leq T leq 100), represent how many test cases.
  • For each test case the first number is N (1leq N leq 50).
  • Then N\, positive integers are followed, all of them are less than 101.

Output

For each test case output the answer in one line.

Sample Input

3
3 1 1 1
3 1 2 3
4 4 3 2 1

Sample Output

1
3
4


思路: 用2个数组存取递增递减序列,并且浪费点空间节省效率的方法去做。

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i,j,test,num,len,A[50],B[50],C[50];
 5     scanf("%d",&test);
 6     for(i=0;i<test;i++)
 7     {
 8         scanf("%d",&num);
 9         for(j=0;j<num;j++)
10             scanf("%d",&C[j]);
11         A[0]=1;
12         B[0]=1;
13         for(j=1;j<num;j++)
14         {
15             if(C[j]>C[j-1])
16             {
17                 A[j]=A[j-1]+1;
18                 B[j]=1;
19             }
20             if(C[j]<C[j-1])
21             {
22                 A[j]=1;
23                 B[j]=B[j-1]+1;
24             }
25             if(C[j]==C[j-1]){
26                 A[j]=1;
27                 B[j]=1;
28             }
29         }
30         for(j=0,len=0;j<num;j++)
31         {
32             if(A[j]>len)    len=A[j];
33             if(B[j]>len)      len=B[j];
34         }
35         printf("%d
",len);
36     }
37     return 0;
38 }
 
原文地址:https://www.cnblogs.com/firstrate/p/3176721.html