0

因此,对于数据结构分配,我必须使用随机选择的五种颜色之一来初始化静态分配的 3D 数组中的每个元素。该数组的类型为 ColorEnum,声明如下:


枚举 ColorEnum { 红色、橙色、黄色、绿色、蓝色};


我的任务是找到构成特定元素序列的元素的索引(这意味着序列中的每个元素在逻辑上与序列中的下一个元素并排、从上到下或从前到后接触)。一个完整的序列将是一个红色元素正在接触橙色元素,而橙色元素正在接触黄色元素,黄色元素正在接触绿色元素,而绿色元素正在接触蓝色元素。要接触,两个元素的整个侧面必须相邻,而不仅仅是边缘或角落。因此,每个元素最多可以接触 6 个其他元素。单个元素可以在多个序列中使用。为了在序列中存储元素的索引,我使用了一个静态分配的 1D 结构数组,该数组将保存元素的行、列和深度索引。为了存储每个序列,我使用了另一个静态分配的 1D 数组,该数组保存序列中元素的索引。谈到我的问题,为了尽可能少地使用内存,我需要知道分配给数组数组的大小。我希望这个大小等于这些红色、橙色、黄色、绿色、蓝色序列的最大数量,但我不知道如何确定这个数字。有没有数学天才愿意帮我一把?我的任务早就完成了。我得到了 94/100,但这个问题困扰着我。我很感激帮助。我希望这个大小等于这些红色、橙色、黄色、绿色、蓝色序列的最大数量,但我不知道如何确定这个数字。有没有数学天才愿意帮我一把?我的任务早就完成了。我得到了 94/100,但这个问题困扰着我。我很感激帮助。我希望这个大小等于这些红色、橙色、黄色、绿色、蓝色序列的最大数量,但我不知道如何确定这个数字。有没有数学天才愿意帮我一把?我的任务早就完成了。我得到了 94/100,但这个问题困扰着我。我很感激帮助。

4

1 回答 1

0

可能序列的最大数量将取决于 3D 数组的尺寸和(当然)网格的填充。从组合的角度来看,我会尝试找到这种 3D 网格的最有效填充。但是,分配最大值是假设最坏的情况,您最好使用@Kevin 评论的向量。

对我来说似乎有效的网格填充是用 3 个先前的颜色和 3 个接下来的颜色填充 1 个块的 6 个相邻位置(因此黄色块将具有 3 个橙色块和 3 个绿色块作为邻居)。如果你用下一种颜色填充(后、右、上)邻居,用前一种颜色填充(前、左、下)邻居,那么新兴结构允许在很多序列中使用 1 个块。如果一种颜色没有下一个/上一个颜色,只有上一个/下一个颜色。

在 2D 中你会有这样的东西(缩写的颜色名称)

BGYOROYGBGYOROYGB
GBGYOROYGBGYOROYG
YGBGYOROYGBGYOROY
OYGBGYOROYGBGYORO
ROYGBGYOROYGBGYOR

使用左下角 R 的序列数是 2^4,使用中间 R 之一(在无限场中)的序列数是 2^5。然后可以针对该模式计算 3D 字段中序列的确切总 nr,同时考虑边界(并且可能在边缘采用不同的方案,因为会有一些损失)

我的填充方法只是填充网格的一种方法,还有其他可能性,甚至可能更好。

于 2013-03-29T11:42:04.433 回答