在NxN矩阵中打印增加相邻序号的序列

时间:2014-07-23 17:56:42

标签: algorithm matrix

问题: 给定NxN矩阵,其中包含所有不同的1到n ^ 2个数字,编写代码以打印增加相邻序号的序列。

例如:
1 5 9
2 3 8
4 6 7

应该打印 6 7 8 9

以上是我在另一个编码网站上看到的问题,但问题没有详细解释。然而,有很多人尝试使用解决方案,所以它让我相信我错过了问题领域的关键部分。不确定从其他网站发布问题是否违反SO规则,所以我会试一试。如果是,请提前道歉。但是无法理解这个问题让我疯了! 原始问题网址:http://www.careercup.com/question?id=5147801809846272

我的思维过程是:矩阵通常一次读取一行 - 自上而下。除非在视觉上看到,否则我无法将6 7 8 9看作相邻的数字。 matrix [row] [column]是我到目前为止看到的一般声明。那么6 7 8 9的相邻问题怎么样呢?

2 个答案:

答案 0 :(得分:2)

解决方案完全取决于"邻近"是定义的,我猜测这里的意思是指在同一行或列上的数字。

Spiral Matrix是如何从外到内遍历矩阵的示例。我想你可以使用它并跟踪序列并打印出来。

答案 1 :(得分:0)

尝试将数字放在单元格而不是矩阵中,

 - - -
|1|5|9|
 - - -
|2|3|8|
 - - -
|4|6|7|
 - - -

根据我的理解,邻近是指细胞共享边缘的数量。

在这种情况下,可以使用以下算法在O(n^2)时间找到答案

maxChain = 0
for each i = n to 1 do
    if (i < n) and (i+1 is adjacent to i)
        currentChain = currentChain + 1
    else
        currentChain = 1
    maxChain = max(maxChain, currentChain)
end

这里maxChain是你的答案。在循环内,currentChain表示形式i,i + 1,i + 2 ...

的最大相邻序列的长度