我有一个问题,我需要通过计算其邻居的总和来处理矩阵作为环形,所以我这样思考:
我在矩阵周围添加了一个边框,其中的元素代表了矩阵的轮廓。更具体地说,如果我有这个矩阵:
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文本,我的英语远非完美,所以如果你有任何问题问他们,我会尝试更好地解释。
答案 0 :(得分:1)
你的最后一个循环迭代器是'j',但你使用'i'来索引元素。