题解 | #迷宫问题#

迷宫问题

http://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

dfs解,反正路只有一条,不用计算最短的

import java.util.*;
public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            while(sc.hasNextInt()) {
                int n = sc.nextInt();
                int m = sc.nextInt();
                int[][] a = new int[n][m];
                for (int i = 0; i < n;i++) {
                    for (int j = 0; j < m; j++) {
                        a[i][j] = sc.nextInt();
                    }
                }
                List<String> path = new ArrayList<String>();
                dfs(0,0, a, path);
                for (int i = path.size() -1 ; i >= 0; i--) {
                      System.out.println(path.get(i));
                            
                    }
                
            }
        }
    
    private static boolean dfs(int i, int j, int[][] a, List<String> path) {
        if (i< 0 || i > a.length-1 || j < 0 || j > a[0].length-1 || a[i][j] == 1) {
            return false;
        }
        if (i == a.length-1 && j == a[0].length-1) {
            path.add("(" + i +"," + j + ")");
            return true;
        }
        
        int temp = a[i][j];
        a[i][j] = 1;
        boolean res = dfs(i + 1, j, a,path) || dfs(i - 1, j, a,path) || dfs(i, j + 1, a,path) || dfs(i, j-1, a,path);
        if (res) {
            path.add("(" + i +"," + j + ")");
        }
        a[i][j] = temp;
        return res;
    }
}
全部评论

相关推荐

2024-12-29 19:48
河北科技大学 Java
没事就爱看简历:问题不在于简历:1、大学主修课程学那么多应用语言,作为计算机专业是很难理解的。 2、技能部分,每一个技能点的后半句话,说明对熟练,熟悉的标准有明显误会。 3、项目应该是校企合作的练习吧,这个项目你负责什么,取得了哪些成果都没有提及,只是列举了你认为有技术含量的点,而这些都有成熟的实现。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务