最长递增序列 2D 矩阵递归更新递归提示伪代码
我收到了一个新的家庭作业,至少可以说这有点令人沮丧。基本上,我有一个2D整数数组,如下所示:
97 47 56 36 60 31 57 54 12 55
35 57 41 13 82 80 71 93 31 62
89 36 98 75 91 46 95 53 37 99
25 45 26 17 15 82 80 73 96 17
75 22 63 96 96 36 64 31 99 86
12 80 42 74 54 14 93 17 14 55
14 15 20 71 34 50 22 60 32 41
90 69 44 52 54 73 20 12 55 52
39 33 25 31 76 45 44 84 90 52
94 35 55 24 41 63 87 93 79 24
我将编写一个递归方法,或者像你一样编写函数,以计算最长递增的子序列。在此示例中,最长递增的子序列如下:
(5,0) with value 12
(6,0) with value 14
(6,1) with value 15
(6,2) with value 20
(7,2) with value 44
(7,3) with value 52
(7,4) with value 54
(6,3) with value 71
(5,3) with value 74
(4,3) with value 96
因此,我不仅要检查N,S,E,W的值是否严格更大,而且还必须考虑对角线。我已经对如何递归地解决这个问题进行了广泛的研究,但是我没有太多的运气,递归是我最弱的科目(是的,我知道它在某些情况下有多强大)。我看过类似的东西,有人提到了一个丙烯酸图表,但这不是我想要的。
到目前为止,我基本上已经用0填充了我的2D数组,这样我就不必担心边界,并且我使用嵌套的for循环来遍历2D数组。在这些循环中,我基本上是在检查N,NE,E,SE,S,SW,W,NW的值是否大于当前元素。对不起,如果我让你们中的一些人感到不安,这是我第一次尝试发帖。如果您需要我发布一些代码,我会这样做。非常感谢您抽出宝贵时间接受采访!