我有一个代表棋盘的二维数组 - t[8][8]
现在让我们说t[4][7]
如何使用此女王参考坐标绘制对角线?
我已经尝试过:
xQueen
位置开始,yQueen
位置用于第二个循环,条件类似
if (i == (xQueen - i) && j == (yQueen - j))
1
到8
while
循环直到达到电路板的限制如果在女王的对角线上,如何在棋盘上的任何位置找到它?
谢谢
答案 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
,则此事实相同。