C ++使用一个点作为参考在二维数组中打印对角线

C++ Print diagonal in two dimensional array using one point as reference

我有一个代表棋盘的二维数组 - t[8][8] 现在假设我们在 t[4][7]

的游戏中有一个女王

如何使用这个皇后参考坐标绘制对角线?

我已经尝试过的:

棋盘上任意一点在皇后的对角线上,如何定位?

谢谢

你可以这样做(不是最好的,但快速且易于理解)

int startX=4;
int startY=7;

int currentX = startX;
int currentY = startY;

while (currentX >=0 && startY>=0) {
    currentX--;
    currentY--;
    chessboard[currentX][currentY] = 1;
}

int currentX = startX;
int currentY = startY;

while (currentX <=7 && startY>=0) {
    currentX++;
    currentY--;
    chessboard[currentX][currentY] = 1;
}

int currentX = startX;
int currentY = startY;

while (currentX <=7 && startY<=7) {
    currentX++;
    currentY++;
    chessboard[currentX][currentY] = 1;
}

int currentX = startX;
int currentY = startY;

while (currentX >=0 && startY<=7) {
    currentX--;
    currentY++;
    chessboard[currentX][currentY] = 1;
}

让我们对数组进行编号,使其从 0 开始。

假设您在 (4, 7) 有一个女王。您可能会发现您要查找的位置包括 (3, 6)(2, 5)(5, 6).

把它们画在纸上,你会发现你想要的很简单。

如果皇后在(x, y)的位置,那么所有(i, j)(i + j == x + y || i - j == x - y的位置都是答案。为了更清楚,您可能希望用 i + j 表示每个位置 (i, j),并将它们放入矩阵中。你会发现同一条对角线上的位置有相同的结果。如果用 i - j.

表示 (i, j),这个事实是一样的