8使用Bredth First搜索的Java拼图

8使用Bredth First搜索的Java拼图,java,Java,我知道Bredth First搜索会迭代节点,然后转到下一个最大的节点。我也不知道这和8字谜游戏有什么关系。这是我的密码: public static void breadthFirstSearch(int[] num, int m, Vector solution) { Queue t = new PriorityQueue(); ArrayList Visited = new ArrayList(); blankNode = 0; int temp;

我知道Bredth First搜索会迭代节点,然后转到下一个最大的节点。我也不知道这和8字谜游戏有什么关系。这是我的密码:

public static void breadthFirstSearch(int[] num, int m, Vector solution) {
    Queue t = new PriorityQueue();
    ArrayList Visited = new ArrayList();
    blankNode = 0;
    int temp;
    printArray(num);
    for (int i : num) {
        if (num[i] == m) {
            blankNode = i;
            System.out.println(blankNode);
        }
    }


    System.out.println(blankNode);
    printArray(num);

}

private static void printArray(int[] num) {
    for (int i : num) {
        System.out.print(num[i] + ",");
    }
    System.out.println();
}

private static int[] moveUp(int[] num, int blankSpace) {
    int temp = 0;
    if (blankSpace != 6 && blankSpace != 1 && blankSpace != 2) {
        blankNode = blankSpace - 3;
        temp = num[blankSpace - 3];
        num[blankSpace - 3] = num[blankSpace];
        num[blankSpace] = temp;
    }

    return num;
}

private static int[] moveLeft(int[] num, int blankSpace) {
    int temp;
    if (blankSpace != 0 && blankSpace != 3 && blankSpace != 6) {
        blankNode = blankSpace - 1;
        temp = num[blankSpace - 1];
        num[blankSpace - 1] = num[blankSpace];
        num[blankSpace] = temp;
    }
    return num;
}

private static int[] moveDown(int[] num, int blankSpace) {
    int temp;
    if (blankSpace != 6 && blankSpace != 7 && blankSpace != 8) {
        blankNode = blankSpace + 3;
        temp = num[blankSpace + 3];
        num[blankSpace + 3] = num[blankSpace];
        num[blankSpace] = temp;
    }
    return num;
}

private static int[] moveRight(int[] num, int blankSpace) {
    int temp;
    if (blankSpace != 2 && blankSpace != 5 && blankSpace != 8) {
        blankNode = blankSpace + 1;
        temp = num[blankSpace + 1];
        num[blankSpace + 1] = num[blankSpace];
        num[blankSpace] = temp;
    }
    return num;
}
现在,在方法breadthFirstSearch中,我需要使用num数组播放tiles。因此,将num数组想象为

045
789
312

和空白节点是7,我需要把它通过右下角的数字交换到右下角。m给了我一个空白的数字。这里如何使用呼吸优先搜索来实现这一点?我是否需要检查所有可能的组合并选择正确的组合?请帮助。

那么我们应该做你的家庭作业吗?如果你觉得你必须在dropbox上链接描述和代码,而不是直接发布在这里,我觉得这对So来说太多了,因此超出了范围。到目前为止你尝试了什么?你在哪里失败了?@StimpsonCat绝对不是,我所要求的只是一个解释,不是为我做的。@Arseniy堆栈溢出不是这样工作的。你必须问一个非常具体的问题,问题,bug等等。请看:为了理解为什么像这样的帖子会被否决。好的,我把这篇帖子拿下来,很抱歉占用你的时间