我正在尝试创建一个函数,该函数在类似国际象棋的游戏中迭代对角线,并在任何位置不为空时返回一个值。 下面的代码用于水平移动。我只是不知道如何将其转换为对角线运动。
我认为 [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]
其中i从0开始到((矩阵大小)-1)并且每个循环增加1
右对角线可以按如下方式索引:
Matrix[j][i]
其中i从0开始,每次循环加一,j从(matrix-1)开始 并且每次循环减一。
<小时/>注意:此索引仅适用于方阵
关于c - 迭代矩阵中的不同对角线并在 C 中建立其起点和终点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56499331/