如何在矩阵周围添加边框?

时间:2014-11-16 00:19:04

标签: c algorithm matrix border

我有一个问题,我需要通过计算其邻居的总和来处理矩阵作为环形,所以我这样思考: 我在矩阵周围添加了一个边框,其中的元素代表了矩阵的轮廓。更具体地说,如果我有这个矩阵:
1 2 3
4 5 6
7 8 9,
在添加边界后,它将是这样的:
9 7 8 9 7
3 1 2 3 1
6 4 5 6 4
9 7 8 9 7
3 1 2 2 1 1 粗体数字表示初始矩阵。注意边界的角是初始矩阵的对角(例如:与 11 (其值为1)相邻的角是 00 ,(其值为9),与 33 相同,与初始矩阵中的 11 相对的角。到目前为止,我已经提出了这个算法,除了最右边的列,我认为它几乎可以正常工作。我知道我的算法没有很好的复杂性,但它是我能想到的最好的算法我对这个问题没有内存/时间限制。有关错误可能位置的任何建议吗?(N是行数,M是列数

        for (i=1; i<N+1; i++)
        {
            for (j=1; j<M+1; j++)
            {
                B[i][j]=A[i][j];
            }
        }
        for(i=1; i<M+1; i++)
        {
            B[0][i]=B[N][i];
            B[N+1][i]=B[1][i];
        }
        for(j=1; j<N+1; j++)
        {
            B[i][0]=B[i][M];
            B[i][M+1]=B[i][1];
        }
        B[0][0]=B[N][M];
        B[M+1][N+1]=B[1][1];
        B[N+1][0]=B[1][M];
        B[0][M+1]=B[N][1];


P.Sorry如果有任何语法/拼写/错误或ambiguos文本,我的英语远非完美,所以如果你有任何问题问他们,我会尝试更好地解释。

1 个答案:

答案 0 :(得分:1)

你的最后一个循环迭代器是'j',但你使用'i'来索引元素。