【问题标题】:finding a specific index on a two dimensional array在二维数组上查找特定索引
【发布时间】:2015-01-23 06:16:03
【问题描述】:

我正在创建一个井字游戏,并将棋盘编号为 1-x(它是一个动态棋盘,用户可以选择行数和列数)。然后我向用户询问他们希望选择的图块的数量,但不确定如何获取与图块相关的数组(二维)的索引。没有它们,我无法将图块从数字更改为 X 或 O

到目前为止我尝试过的事情 Row = (move - 1) % size(因为行和列必须相同) Col = (move - 1 % size

它似乎并非一直有效,例如 5x5 列中的 23。它的指数是 [4,2] 但是当我将它们插入我的方程时,我得到 5.75

【问题讨论】:

  • 你能提供你正在做什么的示例代码吗?此外,假设用户将以“number:number”或“number,number”的形式请求磁贴的编号是否安全?
  • 正如我在对我的回答的评论中指出的那样,如果您将大小存储为整数并移动,那么所有相关除法的结果也将是整数。

标签: c# multidimensional-array


【解决方案1】:

假设第一行有数字1, 2, ..., numberOfColumns,第二行有数字numberOfColumns + 1, numberOfColumns + 2, ..., 2 * numberOfColumns等等,你可以这样做:

如果用户输入号码N 那么你可以说

int row = (N - 1) / numberOfColumns;
int column = (N - 1) % numberOfColumns;

rowcolumn 将是从零开始的索引)。

【讨论】:

  • 我试图在您给出的方程式背后进行数学运算,但没有成功。我假设用户选择了 5x5 板。然后,我将板编号为 1-25,其中 1 为 [0,0],25 为 [4x4]。我随机选择了 19 个来处理你的方程,发现那一行等于 3.6
  • 由于 N - 1 和 numberOfColumns 都是整数,“/”是整数除法,所以 row 也是整数。在您的示例中,行 = (19 - 1) / 5 = 18 / 5 = 3。换句话说,在 C#(和许多其他语言)中,7 / 2 = 3,而 7.0 / 2.0 = 3.5。自己试试看。
  • 嗯嗯好的,我现在明白了,感谢您的回答和澄清!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多