gpt4 book ai didi

c - 我的二维数组边界算法有什么问题?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:25:04 30 4
gpt4 key购买 nike

我有一个二维数组,我必须在其中计算每个元素的邻居之和,环绕边距和角。所以,如果我们有矩阵:

1 2 3
4 5 6
7 8 9,

计算位置 (2, 2) 的最后一个元素的邻居之和:

neighSum(A[2][2]) = 8 + 5 + 6 + 4 + 7 + 1 + 3 + 2

我想要实现的方法是向矩阵添加外部边框。解释是没有意义的,因为它比视觉示例花费的时间要长得多,因此在前一个示例的基础上,矩阵变为:

   7 8 9

3 1 2 3 1
6 4 5 6 4
9 7 8 9 7

1 2 3

但是对于角落,有一个问题。该矩阵被认为是环形,它是具有 donut 形式的几何形状。可以将其视为采用原始矩阵,将其包裹在一个垂直圆柱体上,然后将其包裹在一个水平圆柱体上。此操作使所有角点成为邻居,我们只需要填充添加边框后剩下的部分即可。

9  7 8 9  7

3 1 2 3 1
6 4 5 6 4
9 7 8 9 7

3 1 2 3 1

到目前为止,我已经提出了这个算法,它几乎可以正常工作,除了最右边的列,或者我认为是这样。它表现得很奇怪,有时会覆盖右边框的一些值,有时也会覆盖左边框的值


/* Copy the original matrix to the bordered one */
for (i = 1; i < N + 1; i++)
{
for (j = 1; j < M + 1; j++)
{
B[i][j] = A[i][j];
}
}

/* Add the left and right borders */
for(i = 1; i < M + 1; i++)
{
B[0][i] = B[N][i];
B[N+1][i] = B[1][i];
}

/* Add the top and down borders */
for(j = 1; j < N+1; j++)
{
B[i][0] = B[i][M];
B[i][M+1] = B[i][1];
}

/* Mirror the corners */
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];

最佳答案

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

关于c - 我的二维数组边界算法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952358/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com