Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java表示魔方的最佳数据结构是什么_Java - Fatal编程技术网

用java表示魔方的最佳数据结构是什么

用java表示魔方的最佳数据结构是什么,java,Java,在我的问题中,我不必解魔方。。但我必须找到魔方的正面在按照Singmaster的符号做了几次移动后会是什么样子。 在这个问题中,什么样的数据结构最适合表示魔方..您可以将所有状态存储在一个多维数组中,如下所示: Object[][][] test = new Object[3][3][3]; 对象应替换为表示多维数据集一侧单个值的类。但是请注意,这个数组也将包含立方体的不可见部分的值(在3x3x3示例中,立方体中部的块)。 更新: 如果您希望使用类解决该问题,那么多维数据集的表示逻辑将变得相当

在我的问题中,我不必解魔方。。但我必须找到魔方的正面在按照Singmaster的符号做了几次移动后会是什么样子。
在这个问题中,什么样的数据结构最适合表示魔方..

您可以将所有状态存储在一个多维数组中,如下所示:

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";
}

这是一个很快的可能性,你必须为可能的移动执行逻辑,你必须在每次移动后重建边。但是我不会在这里完全删除数组,因为你可以使用索引来识别你必须移动的层中的立方体部件。

非常感谢。我尝试过使用面向对象的概念来做这件事没有更好的方法,这会有所帮助。.Thnx这真的很旧,但重要的是,不要将rubiks立方体视为多个面,而是多个块。带有绿色、红色、蓝色的块将始终具有这些颜色。因此,我不会使用立方体,而是使用层。(底层、中层、顶层)。当然,你也可以从侧面追踪所有这些,我不会以任何形式说,这个答案是错误的!