迭代NxN矩阵的所有子矩阵的最佳/最快方法

时间:2012-04-04 22:53:40

标签: java algorithm matrix

我有一个方板(NxN矩阵)。每个方格(单元格)都有一个与之相关的点。我的目标是找到具有最高点总和的最大子矩阵。我开始尝试找到所有子矩阵及其权重。但我仍然坚持如何去做。

我以为我可以有一个HashMap<String,Integer>来存储子矩阵的初始行,列和大小。代码看起来像这样:

int [][] mat = new int[10][10];

void countSubMatrix()
{
    for(int i = 0; i<mat.length; i++)
    {
        for(int j = 0; j<mat[i].length; j++)
        {
            storeSubMatrix(i,j);
        }
    }
}

void storeSubMatrix(int x, int y)
{
    int size = 0;
    int tempX = x;
    int tempY = y;
    while(tempX < board.length && tempY < board[x].length)
    {
        map.put(x.toString() + "," + y.toString(),size+1);
        tempX++;
        tempY++;
    }
}

但我不知道这是否是正确的做法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最大的子矩阵,即它也可以是一个矩形,然后this可能对你有所帮助。使用kadane的矩阵算法可以在O(n^3)中完成。