题目
农夫约翰和贝西牛已经开始了其中一个“积极”的假期。他们整天都在山里散步,然后在一天结束时,他们厌倦了回到度假小屋。
由于攀爬需要大量能量并且已经疲惫,他们希望使用其最高和最低高度之间的差异最小的路径返回到机舱,无论路径有多长。帮助FJ找到这条易于移动的路径。
山的地图由N×N(2 <= N <= 100)整数高程矩阵给出(0 <=任意高程<= 110)FJ和Bessie当前位于左上角位置(第1行,列) 1)并且舱室位于右下方(第N行,第N列)。它们可以向右,向左,向顶部或向网格底部移动。他们不能在对角线上旅行。
输入
*第1行:单个整数,N
*行2…N + 1:每行包含N个整数,每个整数指定一个正方形的高度。第2行包含网格的第一行(顶部); 第3行包含第二行,依此类推。该行上的第一个数字对应于网格的第一个(左)列,依此类推。
产量
*第1行:一个整数,它是最佳路径上的最小高度差。
样本输入
5
1 1 3 6 8
1 2 2 5 5
4 4 0 3 3
8 0 2 3 4
4 3 0 2 1
样本输出
2
分析与解答
这题根滑雪那到一样,用普通的搜索根本没法写,因为广搜每个节点只访问一次,而这个并不是只找一条路。深搜的话找路径需要记录当前DFS路径上所遇到所有点的高度,有些路径中的某个点高度过高,一看就知道不需要走,但是深搜还是要走,所以时间上浪费
这题利用二分,我们二分的是个高度差,就是说当前高度差处于[low,up]这个区间的范围之中,对于这个区间[lo