C++ 使用一个点作为引用打印二维数组中的对角线

标签 c++ arrays multidimensional-array chess

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

的比赛中有一个皇后

如何使用该皇后引用坐标绘制对角线?

我已经尝试过:

  • 2 个嵌套 for 循环,从第二个循环的 xQueen 位置和 yQueen 位置开始,条件如下 if (i == (xQueen - i) && j == (yQueen - j))
  • 相同,但从 1 开始到 8
  • 使用 while 循环,直到达到棋盘的限制

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

谢谢

最佳答案

让我们对数组进行编号,使其从 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 .

关于C++ 使用一个点作为引用打印二维数组中的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34706756/

相关文章:

c++ - 抽象类的二维数组?

c++ - 在二维 std::vector 中设置元素

c++ - 使用GCC boost 线程编译器错误

c++ - 我的程序结构/设计所需的输入

php - 为没有容器数组的 ArrayAccess 实现 Iterator 接口(interface)

python - numpy 字符数组到字符串

c - 我怎么知道数组中的元素是否存在?

c - 如何将多维指针/数组传递给递归函数

c++ - 快速线程同步

c++ - 基于 compare_exchange 的循环是否受益于暂停?