以下是问题陈述:
有一个大小为m*n的矩阵,其中包含1到m*n的所有数字。现在,如果一个元素符合以下特征,则被称为特殊元素(递归定义):
一个单元格的邻居是与其共享边缘的单元格。因此,内部单元格有4个邻居,边缘单元格有3个邻居,角落单元格有2个邻居。
问题陈述说矩阵中只有一些(可能为0)单元格被填充。剩下的单元格需要以这样的方式填充,即使用1到m*n的所有数字,并且我们需要最大化特殊元素的数量。此外,如果有多个答案,则会选择字典序最小的矩阵作为答案。
如果一个矩阵的行主视图的字符串字典序比另一个要小,则该矩阵在字典上比另一个矩阵小。
有一个大小为m*n的矩阵,其中包含1到m*n的所有数字。现在,如果一个元素符合以下特征,则被称为特殊元素(递归定义):
-it is the top left corner element(at position (0,0))
-an element at (x,y) is special if its neighbour is an element (m,n) such that (m,n) is
special and the element at (x,y) is greater than the element at(m,n) and all of the (m,n)'s neighbours.
一个单元格的邻居是与其共享边缘的单元格。因此,内部单元格有4个邻居,边缘单元格有3个邻居,角落单元格有2个邻居。
问题陈述说矩阵中只有一些(可能为0)单元格被填充。剩下的单元格需要以这样的方式填充,即使用1到m*n的所有数字,并且我们需要最大化特殊元素的数量。此外,如果有多个答案,则会选择字典序最小的矩阵作为答案。
如果一个矩阵的行主视图的字符串字典序比另一个要小,则该矩阵在字典上比另一个矩阵小。
Test case 1: //2 X 3 matrix
2 ? ?
? ? 3
Solution 1:
2 1 4
5 6 3
Test case 2: //6 X 6 matrix
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
Solution 2:
1 2 3 13 14 15
4 6 8 10 11 16
5 7 9 12 19 17
28 26 24 22 20 18
29 27 25 23 21 36
30 31 32 33 34 35
我的思路:
矩阵中的特殊元素始终是连续的。因此,我们必须找出通过连接相邻的特殊元素形成的最长路径。此外,在将一个元素放置在特殊元素(m,n)的相邻单元格(x,y)之前,我们首先填写特殊元素(m,n)的所有邻居(除了(x,y)),然后选择大于它们所有的值来填充(x,y)。
我不知道如何继续,并如何包括字典上最小的条件。请帮忙。
提前感谢。