【发布时间】:2019-09-27 09:17:35
【问题描述】:
我正在尝试从可以包含不同数字的矩阵中找到具有相同数字的最大方形子矩阵
我找到了一些似乎与这个问题相同的答案,但没有任何带有方形子矩阵的答案
int[,] dp = new int[a.GetLength(0), a.GetLength(1)];
for (int i = 0; i < a.GetLength(0); i++)
{
for (int j = 0; j < a.GetLength(1); j++)
{
if (i == 0 || j == 0)
dp[i, j] = 1;
else
{
if (a[i, j] == a[i - 1, j] &&
a[i, j] == a[i, j - 1] &&
a[i, j] == a[i - 1, j - 1])
{
dp[i, j] = (dp[i - 1, j] > dp[i, j - 1] &&
dp[i - 1, j] > dp[i - 1, j - 1] + 1) ?
dp[i - 1, j] :
(dp[i, j - 1] > dp[i - 1, j] &&
dp[i, j - 1] > dp[i - 1, j - 1] + 1) ?
dp[i, j - 1] :
dp[i - 1, j - 1] + 1;
}
else dp[i, j] = 1;
}
}
}
{{7, 4, 7, 7, 7, 7},
{7, 4, 7, 7, 7, 7},
{7, 7, 1, 7, 7, 7},
{7, 7, 3, 7, 9, 7},
{1, 1, 7, 7, 1, 7},
{7, 7, 7, 5, 7, 7}}; I expect to get the top right 3x3 submatrix containing 7's
【问题讨论】: