我有一个16x16x16立方矩阵,其中包含[0;k]
可能的值,我希望能够列出矩阵中最大的可能长方体,其中每个值对于这个长方体都是相同的。
一个迭代的“扩展”算法可以做到这一点,但如果有4096个单元,这将是一个昂贵的方法。
也有类似的问题,但它们只涉及二维矩阵
最佳答案
我认为“长方体”的意思是它在所有的三维空间中都必须是相同的大小。
在这种情况下,具有最大点(x,y,z)的最大长方体的尺寸可以从最大长方体的大小(x-1,y,z),(x,y-1,z),(x,y,z -1),(x-1,y-1,z),(x-1,y,z -1),(x,y-1,Z-1),和(x-1,y-1,Z-1)来计算。
只需按和(x,y,z)顺序处理这些点,然后,如果所有相邻点的值都相同,则最大的立方体大小(x,y,z)=1+min(最大的立方体大小(…对于坐标较小的每个相邻点…)
编辑:由于不要求所有边的长度都相同,因此需要跟踪每个单元格的多个数据才能使用此方法例如,您可以计算每个盒子的最大尺寸(宽度,高度)。
您仍然可以从相邻单元格计算每个单元格的条目,但每个单元格最多可以有256个条目,因此这是一个较长的过程。
这是高达16^5(1048576)的值,必须计算才能解决整个问题应该不到一秒钟,所以也许对你来说足够快了。
关于java - 列出16x16x16矩阵中最大的长方体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57291155/