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

时间:2016-01-10 14:49:50

标签: c++ arrays multidimensional-array chess

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

我们在那场比赛中有一位女王

如何使用此女王参考坐标绘制对角线?

我已经尝试过:

  • 2嵌套for循环从xQueen位置开始,yQueen位置用于第二个循环,条件类似 if (i == (xQueen - i) && j == (yQueen - j))
  • 相同,但从18
  • 开始
  • 使用while循环直到达到电路板的限制

如果在女王的对角线上,如何在棋盘上的任何位置找到它?

谢谢

2 个答案:

答案 0 :(得分:0)

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

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;
}

答案 1 :(得分:0)

让数组编号,使其从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,则此事实相同。