c - 迭代矩阵中的不同对角线并在 C 中建立其起点和终点?

标签 c for-loop matrix diagonal

我正在尝试创建一个函数,该函数在类似国际象棋的游戏中迭代对角线,并在任何位置不为空时返回一个值。 下面的代码用于水平移动。我只是不知道如何将其转换为对角线运动。

我认为 [r] 和 [c] 的增量必须同时发生,以便它沿对角线移动。我怎样才能做到这一点?

int checkHorizontal(int fromr, int fromc, int toc){
    if (fromc < toc){
        for(int c = fromc + 1; c < toc; c++){
            if ((tablero[fromr][c]) != &empty){
                return 0;
            }
        }
    }
    else if (fromc > toc){
        for(int c = toc + 1; c < fromc; c++){
            if ((tablero[fromr][c]) != &empty){
                return 0;
            }
        }
    }
    return 1;
}

如果其中一个空格不为空,我希望该函数返回 0;如果所有空格都为空,则该函数返回 1。

最佳答案

左对角线可以按如下方式索引:

Matrix[i][i]

其中i0开始到((矩阵大小)-1)并且每个循环增加1

右对角线可以按如下方式索引:

Matrix[j][i]

其中i0开始,每次循环加一,j(matrix-1)开始 并且每次循环减一。

<小时/>

注意:此索引仅适用于方阵

关于c - 迭代矩阵中的不同对角线并在 C 中建立其起点和终点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56499331/

相关文章:

c - 打印语句不断打印多次而不是一次?

batch-file - 特定文件的 "FOR"命令?

python - 随机矩阵,各列值的总和不大于 1

c# - 模拟海水,需要计算复杂的值

c - 如何更改已编译二进制文件的 lib 版本

c - 如何测试我自己的(小型)嵌入式操作系统的可靠性?

r - 循环匹配姓名列表并根据姓名的性别填充新变量

c++ - 在 C++ 中转置矩阵

c - 将 Fortran 零长度数组传递给 C 的正确方法是什么?

xml - XSLT for 循环或节点复制的替代方案