【发布时间】:2017-06-27 17:46:19
【问题描述】:
我正在使用 C 中的数组(单维)编写国际象棋引擎?
#define ROW(sq) (sq >> 3)
#define COL(sq) (sq & 7)
int board[64] = {
0,1,2,3,4,5,6,7,
8,9,10,11,12,13,,14,15,
.......................
.......................
56,57,48,59,60,61,62,63
}
现在: 要获取数字 11 的行和列,我使用以下命令:
int r = ROW(11);
int c = COL(11);
它给出:
r = 1
c = 3
请帮助我编写一个函数,以便将参数作为r 和c 并给出正确的正方形,例如:
sq = fnc(r,c);
sq = fnc(1,3);
sq = 11;
【问题讨论】:
-
您考虑过
int board[8][8]吗?还是单维是必需的? -
@GAURANGVYAS:二维数组与一维数组不同。即使对于可变大小的数组,不使用二维数组也是没有意义的。
-
@Olaf 我的错。在没有正确看到问题的情况下发表评论。
-
我知道这已经很老了,但我不同意“没有理由不使用 2D 数组”。二维数组在内存中的布局与一维数组完全相同。它实际上是一个数组数组。使用 1D 数组作为数据并选择将其绘制为 2D 可视网格没有任何问题。将数据配置与其可视化表示分离非常好。