如果我们有一个3x3x3的对象数组,它包含两个成员:一个布尔值和一个整数;任何人都可以建议一种有效的方法,根据布尔值将此数组标记为连续的块。 例如,如果我们将其描绘为Rubix立方体,并且缺少中间切片(1,x,x == false),我们可以通过唯一的组标识符将两个外部切片标记为单独的组int成员。
如果“切片”经过90度,则留下L形和条状,同样需要应用。
是否可以使用递归的非常大的3D数组来完成?可能是线程化的。
到目前为止,我已经打了几次打字,但最后却陷入了几个死胡同并且堆栈溢出。
非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
如果我正确地理解术语“连续块”,即从每个顶点到所有其他顶点都有路径的所有那些数组元素的最大集合,并且它们都共享相同的布尔值,则这是一个问题可以使用简单finding connected components in a graph来完成DFS。想象一下,每个数组元素都是一个顶点,并且当且仅当1)它们共享相同的布尔值时才连接两个顶点2)它们仅相差一个坐标,并且差值为1绝对值(即它们是相邻的)