我收到了一项新的作业任务,可以说让人有些沮丧。基本上,我需要创建一个二维整数数组,如下所示:
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填充了我的二维数组,这样我就不必担心边界问题,并使用嵌套的for循环遍历二维数组。在这些循环内部,我基本上检查N、NE、E、SE、S、SW、W、NW是否具有比当前元素更大的值。如果我惹怒了一些人,对不起,这是我第一次尝试发帖。如果您需要我发布一些代码,我会这样做的。非常感谢您的时间!