改组多维动态数组

禁令

如果我有一个2d动态数组(8x8),其中包含5个2和10个1,其余全部为0我将如何对其进行混洗,以便将所有数字随机放置在网格上?(数组已经填充了这些数字)

大卫·赫弗南(David Heffernan)

不要使用多维数组。使用长度为8 * 8 = 64的一维数组。将值放入该数组。然后洗牌。最后,将值一个接一个地拉到多维数组中。用伪代码看起来像这样:

N := 8;
SetLength(arr, N*N);
idx := 0;
for i := 1 to 5 do begin
  arr[idx] := 2;
  inc(idx);
end;
// etc., until array is populated

ShuffleArray(arr); // you know how to do this from your previous question

for idx := 0 to high(arr) do begin
  Grid[idx div N, idx mod N] := arr[idx];
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章