在我的问题中,我不需要解决rubik立方体..但是我必须根据Singmaster的表示法找到rubik立方体的正面看起来像是几行之后的样子。 在这个问题中,哪种数据结构最适合代表rubik立方体。
答案 0 :(得分:3)
您可以将所有状态存储在多维数组中,如下所示:
Object[][][] test = new Object[3][3][3];
对象应该用表示立方体侧的单个值的类代替。但请注意,此数组还包含多维数据集不可见部分的值(在3x3x3示例中,该多维数据集中间的块)。
<强>更新强>
如果您希望使用该问题的类,则多维数据集的表示逻辑会变得相当复杂。
class Cube {
private CubeSide bottom = new CubeSide();
private CubeSide top = new CubeSide();
private CubeSide left = new CubeSide();
private CubeSide right = new CubeSide();
private CubeSide front = new CubeSide();
private CubeSide back = new CubeSide();
}
class CubeSide {
private CubePart[][] = new CubePart[3][3];
}
class CubePart {
private String color = "red";
}
那很快就可以实现可能移动的逻辑,并且必须在每次移动后重建边。但是我不会完全删除数组,因为你可以使用索引来识别你必须移动的图层中的CubeParts。