解决迷宫Java程序

时间:2013-12-02 16:48:10

标签: java stack

我有一个迷宫包含3个字母e g w

  • e入场
  • g目标
  • w代表墙壁。

我找到了e,但是我必须向内移动并打印一个短划线,当我找到一堵墙时,我应该前往前一个短划线(位置添加到堆叠中)并再次尝试所有可能的方法。

for (int xy = p.row; xy < row; xy++) {
   for (int yz = p.col; yz < col; yz++) {

        if (s[xy][yz + 1] == ' ') {
            s[xy][yz + 1] = '.';
            p = new Pos(xy, yz + 1);
            st.push(p);
        }
        if (s[xy - 1][yz] == ' ') {
            s[xy - 1][yz] = '.';
            p = new Pos(xy - 1, yz);
            st.push(p);
        }
        if (s[xy + 1][yz] == ' ') {
            s[xy + 1][yz] = '.';
            p = new Pos(xy + 1, yz);
            st.push(p);
        }
        if ((yz >= 1) && (s[xy][yz - 1] == ' ')) {
            s[xy][yz - 1] = '.';
            p = new Pos(xy, yz - 1);
            st.push(p);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

它看起来是什么样的,当你到达那里时,你会推动新的位置。在你知道它的墙之前不要推它。

在您移动之前检查所有方向是否有效。

if(ValidMove(array[x][y])){
    //if NOT WALL...Move
}else{
    //if IS WALL...check another
}

这样你就有了一堆堆有效的动作。不是墙壁,你不必弹出无效的动作,找到你最后一个。