SZU:A12 Jumping up and down

系统 1774 0

Judge Info

  • Memory Limit: 32768KB
  • Case Time Limit: 10000MS
  • Time Limit: 10000MS
  • Judger: Number Only Judger

Description

In the kingdom of frog, the most popular sport is jumping up and down. Frog likes to jump up(go higher) or jump down(go lower) but jump at the same height(not go higher,and not go lower). The frog king wants to have a sport path for jumping. The Sport path is made by same size blocks which may have different height,when the frog on the path, he can only jumps from one block to the next adjacent block. For frog, perfect path for jumping are those same-height-jumps can be avoided. The Sport path can be represented by an integer sequence which denotes the height of blocks.The length of the sport path is the numbers of integer in the sequence.

Task

Now, it is your turn. You will have a integer sequence represent a sport path, please output the longest perfect path we can find in the given sport path without cutting off.

Input

The first line of input contains , the number of test cases. There are two lines for each test case. The first line contains an integer number denoting how many blocks in the sport path. The second line contains  N  integer numbers (the height of blocks in the range  [ − 100,100] ).

Output

For each test case, print a line contains the solution.

Sample Input

    2

8

1 1 3 5 5 7 9 8

5

1 2 3 4 5


  

Sample Output

    4

5
    


解题思路:刚开始读不懂题意,以为是消除相同数和其本身,经过朋友说下才明白,原来是找最长的子串,但是遇到重复数字就开始新的字符串序列。
刚开始用了两个数组,之后用一个数组,而ACMser都不用开数组。

      
         1
      
       #include <stdio.h>


      
         2
      
       #include <
      
        string
      
      .h>


      
         3
      
      
        int
      
       A[
      
        103
      
      
        ];


      
      
         4
      
      
         5
      
      
        int
      
      
         main() {


      
      
         6
      
      
        int
      
      
         t,i,n,pre,max,count,min;


      
      
         7
      
           scanf(
      
        "
      
      
        %d
      
      
        "
      
      ,&
      
        t);


      
      
         8
      
      
        while
      
       (t--
      
        ) {


      
      
         9
      
               max = 
      
        1
      
      
        ;


      
      
        10
      
               scanf(
      
        "
      
      
        %d
      
      
        "
      
      ,&
      
        n);


      
      
        11
      
      
        for
      
       (i=
      
        0
      
      ;i<n;i++
      
        ) {


      
      
        12
      
                   scanf(
      
        "
      
      
        %d
      
      
        "
      
      , &
      
        A[i]);


      
      
        13
      
      
                }


      
      
        14
      
               pre = 
      
        0
      
      
        ;


      
      
        15
      
               count =
      
        1
      
      
        ;


      
      
        16
      
      
        for
      
       (i=
      
        1
      
      ;i<n;++
      
        i) {


      
      
        17
      
      
        18
      
      
        if
      
      (A[i]==
      
        A[pre]){


      
      
        19
      
      
        if
      
      (count>
      
        max)


      
      
        20
      
                           max =
      
         count;


      
      
        21
      
                       count =
      
        1
      
      
        ;


      
      
        22
      
      
        continue
      
      
        ;


      
      
        23
      
      
                    }


      
      
        24
      
                   count++
      
        ;


      
      
        25
      
                   pre=
      
        i;


      
      
        26
      
      
                }


      
      
        27
      
               min =
      
         count;


      
      
        28
      
      
        if
      
       (min >
      
         max)


      
      
        29
      
                   max =
      
         min;


      
      
        30
      
               printf(
      
        "
      
      
        %d\n
      
      
        "
      
      
        ,max);


      
      
        31
      
      
            }


      
      
        32
      
       }
    

 

朋友的做法(不开数组):

      
         1
      
       #include <stdio.h>


      
         2
      
      
        int
      
       process(
      
        int
      
      
         n);


      
      
         3
      
      
        int
      
      
         main()


      
      
         4
      
      
        {


      
      
         5
      
      
        int
      
      
         testcase;


      
      
         6
      
           scanf(
      
        "
      
      
        %d
      
      
        "
      
      , &
      
        testcase);


      
      
         7
      
      
        while
      
       (testcase--
      
        ) {


      
      
         8
      
      
        int
      
      
         n;


      
      
         9
      
               scanf(
      
        "
      
      
        %d
      
      
        "
      
      , &
      
        n);


      
      
        10
      
               printf(
      
        "
      
      
        %d\n
      
      
        "
      
      
        , process(n));


      
      
        11
      
      
            }


      
      
        12
      
      
        }


      
      
        13
      
      
        int
      
       process(
      
        int
      
      
         n)


      
      
        14
      
      
        {


      
      
        15
      
      
        int
      
      
         i, pre, cur;;


      
      
        16
      
           scanf(
      
        "
      
      
        %d
      
      
        "
      
      , &
      
        pre);


      
      
        17
      
      
        int
      
       cnt = 
      
        1
      
      , cur_max = 
      
        1
      
      
        ;


      
      
        18
      
      
        for
      
       (i = 
      
        1
      
      ; i != n; i++
      
        ) {


      
      
        19
      
               scanf(
      
        "
      
      
        %d
      
      
        "
      
      , &
      
        cur);


      
      
        20
      
      
        if
      
       (cur ==
      
         pre) {


      
      
        21
      
      
        if
      
       (cur_max <
      
         cnt)


      
      
        22
      
                       cur_max =
      
         cnt;


      
      
        23
      
                   cnt = 
      
        1
      
      
        ;


      
      
        24
      
      
                }


      
      
        25
      
      
        else
      
      
         {


      
      
        26
      
                   cnt++
      
        ;


      
      
        27
      
      
                }


      
      
        28
      
               pre =
      
         cur;


      
      
        29
      
      
            }


      
      
        30
      
      
        if
      
       (cur_max <
      
         cnt)


      
      
        31
      
               cur_max =
      
         cnt;


      
      
        32
      
      
        return
      
      
         cur_max;


      
      
        33
      
       }
    

 

    
       
    
  

SZU:A12 Jumping up and down


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论