现在的位置: 首页 > 综合 > 正文

ACM_10 Skiing

2019年06月13日 ⁄ 综合 ⁄ 共 1264字 ⁄ 字号 评论关闭

skiing

时间限制:3000 ms
  内存限制:65535
KB
难度:5
描述
Michael喜欢滑雪百这并不奇怪,
因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个
区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
1 2 3 4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。

输入
第一行表示有几组测试数据,输入的第二行表示区域的行数R和列数C(1 <= R,C <=
100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。
后面是下一组数据;
输出
输出最长区域的长度。
样例输入
1
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
样例输出
25
来源

经典题目
上传者
iphxer

import java.util.ArrayList;
import java.util.Scanner;

public class Skiing {

    public
static void main(String[] args) {
       
Skiing skiing =new Skiing();
       
skiing.solution();
    }

    public void
solution() {
   
    Scanner in =
new Scanner(System.in);
   
    int groups =
in.nextInt();
   
    for (int i =
0; i < groups; i++) {
          
final int Line = in.nextInt();
          
final int Col = in.nextInt();
          

          
//预防异常输入
          
if(Line == 0 || Col==0){
       
   
   System.out.println(0);
       
   
   continue;
          
}
          

          
final int[][] Height = new int[Line][Col];
          
for(int j = 0 ; j < Line ; j++){
       
   
   for(int k = 0; k <
Col;k++){
       
   
   
   Height[j][k] =
in.nextInt();
       
   
   }
          
}
          

          
int result  =
getLongestLength(Line,Col,Height);
          
System.out.println(result);
   
    }
    }
   

抱歉!评论已关闭.