习题9-1
【UVa 10285】longest Run on a Snowboard(最长滑雪路径)
题目大意:
在一个R*C(R,C<=100)的整数矩阵上找一条高度严格递减的最长路。起点任意,但每次只能沿着上下左右4个方向之一走一格,并且不能走出矩阵外。如图所示,最长路就是按照高度25,24,23,…,2,1这样走,长度为25。矩阵中的数均为0~100.
图:
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
思路:
可以看到样例中的最长路就是顺时针螺旋向中心前进,这个过程应该很容易在脑海里模拟吧,于是我们现在可以推出一个深搜的过程(即假设每个整数为一个节点,从各个节点出发,向着每个相对于自身小的方向尽可能深入地搜索),访问过某个节点后,进行记忆化操作(即使用向下节点的最值返回值更新设置的f数组,使脱离未访问状态,同时也是记录结果),之后再次访问时可直接调用此数组对应下标的值,避免重复访问(此处应满足无后效性),这样一直到以最后一个节点为起点搜索完,循环遍历一遍f数组,得到的最大值即为答案。
tips:在