C扫描阵列对角线

1 c arrays

我有一个C项目,我必须扫描array[10][15]对角线,如下图所示.

在此输入图像描述

我想帮助我找到如何以这种方式扫描阵列......非常感谢你.

对不起我的英语(我是希腊语)

Ker*_* SB 7

请注意,沿着每个对角线,差异* i - j是恒定的.所以你有一个嵌套的双循环,其中外部循环区别于:

  • 第一轮:差异-14, arr[0][14]

  • 第二轮:差异-13 arr[0][13],arr[1][14]

  • ...

  • 最后一轮:差异+9 , arr[9][0].

在代码中:

for (int d = -14; d < 10; ++d)
{
    for (int i = 0; i < d + 15 && i < 10; ++i)
    {
      if (i < d) continue;

      // access arr[i][i - d];
      printf("[%d, %d]\n", i, i - d);
    }
}
Run Code Online (Sandbox Code Playgroud)

注意数字1015代码的外观; 图片很容易推广到任意数组边界.

*)或者,正如@Alexey指出的那样,总和 i + j是恒定的,取决于图片中原点的位置; 在这种情况下,修改循环如下:

for (int d = 0; d <= 9 + 14; ++d)
{
    for (int i = 0; i <= d && i < 10; ++i)
    {
        if (i + 15 <= d) continue;
        // use arr[i][d - i];
    }
}
Run Code Online (Sandbox Code Playgroud)