在我的问题中,我不必求解rubik立方体。。但我必须根据星爷的记法,在做了几次移动后,才能发现红宝石立方体的正面会是什么样子。在这个问题中,什么样的数据结构最适合表示rubik立方体。。
您可以将所有状态存储在一个多维数组中,如下所示:
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,你必须非常容易地移动。