Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 获取矩阵中周围元素的和_C_Matrix - Fatal编程技术网

C 获取矩阵中周围元素的和

C 获取矩阵中周围元素的和,c,matrix,C,Matrix,在[N][N]矩阵中,获得围绕某个元素的8个元素之和的最佳方法是什么 我们一直在用蛮力的方式做这件事,只是检查了很多if语句,但我想知道是否有最聪明的方法来做这件事 我们面临的问题是矩阵的边界,因为我们找不到比原始的if(i>0&&j>0){…}更微妙的方法假设矩阵已初始化,并且您正在考虑计算所有八个对应元素都存在的元素之和。如果您只对这些元素应用双for循环,则可以通过执行以下操作节省时间: Let a N x N matrix then use the following to cover

[N][N]矩阵中
,获得围绕某个元素的8个元素之和的最佳方法是什么

我们一直在用蛮力的方式做这件事,只是检查了很多
if
语句,但我想知道是否有最聪明的方法来做这件事


我们面临的问题是矩阵的边界,因为我们找不到比原始的
if(i>0&&j>0){…}更微妙的方法

假设矩阵已初始化,并且您正在考虑计算所有八个对应元素都存在的元素之和。如果您只对这些元素应用双for循环,则可以通过执行以下操作节省时间:

Let a N x N matrix then use the following to cover all the elements satisfying the above conditions


  for( i =  1; i < N - 1 ;i++)
    {
      for( j = 1;j < N -1 ;j++)
      {
        //YOUR CODE 
      }
    }
让一个nxn矩阵,然后使用以下公式覆盖满足上述条件的所有元素
对于(i=1;i
假设矩阵已初始化,并且您正在考虑计算所有八个对应元素的总和。如果您只对这些元素应用双for循环,则可以通过执行以下操作节省时间:

Let a N x N matrix then use the following to cover all the elements satisfying the above conditions


  for( i =  1; i < N - 1 ;i++)
    {
      for( j = 1;j < N -1 ;j++)
      {
        //YOUR CODE 
      }
    }
让一个nxn矩阵,然后使用以下公式覆盖满足上述条件的所有元素
对于(i=1;i
如果相邻边可以缠绕到另一条边,请使用模运算符,但在<0时要小心,在取模之前,您应该添加宽度/深度,例如
(i-1+N)%N
。不,在我的情况下,矩阵表示平面中灯光的“亮度”,另一种方法是使矩阵的2个元素在每个维度上变大,然后对元素进行索引
1..N
,如果矩阵(边框)初始化为
0
,则不会出现边溢出,并将良性
0
添加到相邻和中。。。。但这可能会扭曲你的计算,比如说,你想计算邻居的平均数。另一个建议是对内部运行一个双循环,对边运行四个线性循环(如果矩阵是正方形,则对每条边运行一个单循环),最后处理四个角。如果相邻边可以包裹到另一条边,则使用模运算符,但是当<0时要小心,在取模数之前,你应该先加上宽度/深度,例如
(i-1+N)%N
。不,在我的例子中,矩阵表示平面中灯光的“亮度”,因此它们不会缠绕。另一种方法是使矩阵在每个维度中的2个元素更大,然后对元素进行索引
1..N
,如果将矩阵(边框)初始化为
0
,则不会出现边缘溢出,并将良性
0
添加到相邻和中。。。。但这可能会扭曲你的计算,比如说,你想计算邻居的平均数。还有一个建议是在内部运行一个双循环,在边缘运行四个线性循环(如果矩阵是正方形,则在每个边上运行一个单循环),最后处理四个角。这是在整个矩阵上循环的标准方法,但问题不在于,它是关于获取周围元素,首先检查它们是否“存在”这是在整个矩阵上循环的标准方法,但问题不在于,它需要获取周围的元素,首先检查它们是否“存在”