c - 使用 2 个字符随机化 2D 数组?

标签 c

您好,Stack Overflow 社区。我想知道如何在C中仅使用2个字符随机生成2D数组,条件是顶行、底行、第一列和最后一列是相同的字符,只有2个元素除外。我不需要演练,我只需要一个关于如何实现这一目标的更清晰的想法。任何帮助,将不胜感激。

一个例子:

@#@@@@   
@#@@@@   
@##@@@  
@@#@@@

最佳答案

首先像这样生成中心:

for(i = 1; i < (row - 1); i++) {
  for(j = 1; j < (column - 1); j++) {
      // select random caracteres to this positions
  }
}

现在在边界处留下了一个“数组”以进行随机。

您的数组长度为:2n + 2m - 4(n = 行,m = 列,- 4 个公共(public)索引)

现在生成两个随机位置并生成一个随机字符。

这两个位置必须是这个字符,其他位置必须是另一个字符。

示例:

[][][][]
[][][][]
[][][][]

完成中心:

[][][][]
[][@][#][]
[][][][]

长度数组:(2*3 + 2*4) - 4 = 10

随机位置 = 3 和 9

您可以使用时钟时间来创建索引:

[0][1][2][3]
[9][@][#][4]
[8][7][6][5]

位置的随机字符=“#”

[][][][#]
[#][@][#][]
[][][][]

用顺序字符完成。

[@][@][@][#]
[#][@][#][@]
[@][@][@][@]

当然,您需要在矩阵中实现时钟行走。

希望这有帮助 =)

关于c - 使用 2 个字符随机化 2D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132967/

相关文章:

c - "char input[10]={0}"是否初始化所有元素?

c++ - Cuda 从设备内存创建 3d 纹理和 cudaArray(3d)

c - 打印二进制数给出奇怪的结果

C 数组在循环外打印不正确

c - 错误 : too few arguments to function ‘ptr’ , 需要从函数中执行 eval_time

c - C : enum vs constant vs defines 中的模式设置

c - 我的 c 程序在运行函数中的循环之前结束

c++ - 简单的逐帧视频解码器库

c++ - linux和windows串口通信

c - 打印消息内联汇编