Arrays 三维阵列中特定元素序列的最大数量

Arrays 三维阵列中特定元素序列的最大数量,arrays,math,multidimensional-array,mathematical-optimization,discrete-mathematics,Arrays,Math,Multidimensional Array,Mathematical Optimization,Discrete Mathematics,因此,对于数据结构分配,我必须使用随机选择的五种颜色之一初始化静态分配的3D数组中的每个元素。数组的类型为ColorEnum,声明如下: 枚举颜色枚举{红色、橙色、黄色、绿色、蓝色} 我的任务是找到组成特定元素序列的元素的索引(这意味着序列中的每个元素在逻辑上是并排、从上到下或从前到后接触序列中的下一个元素)。一个完整的序列将是一个红色元素接触橙色元素接触黄色元素接触绿色元素接触蓝色元素的序列。要接触,两个元素的整个边必须相邻,而不仅仅是边或角。因此,每个元素最多可以接触6个其他元素。单个元

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


枚举颜色枚举{红色、橙色、黄色、绿色、蓝色}



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

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

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

在2D中,您可能会有类似的内容(缩写颜色名称)

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


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

因此,您有一个对象集合,但您无法提前知道将有多少对象。听起来像是一个教科书上的用例!没错,我只是对数学家如何确定这些“对象”的最大数量感兴趣。谢谢,我很感谢你花时间来写这个答案。我忘了在我的问题中提到3D阵列的尺寸是5x5x5。这将消除一个变量。但是,正如您所说,可能还有另一种填充数组的方法更好。我发布这个问题仅仅是出于对一个可以用来解决我所说问题的数学公式的好奇。
BGYOROYGBGYOROYGB
GBGYOROYGBGYOROYG
YGBGYOROYGBGYOROY
OYGBGYOROYGBGYORO
ROYGBGYOROYGBGYOR