C ++使用一个点作为参考在二维数组中打印对角线
C++ Print diagonal in two dimensional array using one point as reference
我有一个代表棋盘的二维数组 - t[8][8]
现在假设我们在 t[4][7]
的游戏中有一个女王
如何使用这个皇后参考坐标绘制对角线?
我已经尝试过的:
- 2 嵌套 for 循环从
xQueen
位置开始,第二个循环的 yQueen
位置开始,条件如下
if (i == (xQueen - i) && j == (yQueen - j))
- 相同,但从
1
到 8
- 使用
while
循环直到达到板的限制
棋盘上任意一点在皇后的对角线上,如何定位?
谢谢
你可以这样做(不是最好的,但快速且易于理解)
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)
,这个事实是一样的
我有一个代表棋盘的二维数组 - t[8][8]
现在假设我们在 t[4][7]
如何使用这个皇后参考坐标绘制对角线?
我已经尝试过的:
- 2 嵌套 for 循环从
xQueen
位置开始,第二个循环的yQueen
位置开始,条件如下if (i == (xQueen - i) && j == (yQueen - j))
- 相同,但从
1
到8
- 使用
while
循环直到达到板的限制
棋盘上任意一点在皇后的对角线上,如何定位?
谢谢
你可以这样做(不是最好的,但快速且易于理解)
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)
,这个事实是一样的