赞
踩
java实现:
- public class Demo {
- /**
- * 计算区域最长长度
- *
- * 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更长。事实上,这是最长的一条。
- *
- * 思路:1、先把各点的高度按照从小到大排序
- * 2、再依次从最小的点遍历,看它周围【上下左右】有没有比它高的点
- * 3、一旦有,就更新比它高的点的路径长度
- * 注意:最后输出的是路径长度而不是最长路径的起始高度
- * 由于开始时路径长度初始化为 0,所以最后的结果要 +1
- * @param all 存储所有区域高度数据
- * @return 区域最长长度
- */
- public int getMaxDistance(int[][] all) {
- int i = 0, j = 0, n = 0;
- int ilen = all.length;
- int jlen = all[0].length;
- int len = jlen * jlen;
- int maxDistan
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。