题解 | #迷宫问题#

迷宫问题

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

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    static List<String> ans = new ArrayList<>();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while(in.hasNext()){
            int m=in.nextInt();
            int n=in.nextInt();
            int[][] matrix = new int[m][n];
            for(int i=0 ; i<m ; ++i){
                for(int j=0 ; j<n ; ++j){
                    matrix[i][j] = in.nextInt();
                }
            }

            List<String> path = new LinkedList<>();

            dfs(matrix, 0, 0, path);

            //System.out.println(ans.size());
            
            for(int i=0 ; i<ans.size() ; ++i){
                System.out.println(ans.get(i));
            }


        }
    }

    public static void dfs(int[][] matrix, int i, int j, List<String> path){
        int m=matrix.length, n=matrix[0].length;
        if(i<0 || i>=m || j<0 || j>=n){
            return;
        }
        if(matrix[i][j] == 1){
            return;
        }
        if(i==m-1 && j==n-1){
            path.add("("+i+","+j+")");
            ans = new ArrayList<>(path);
            return;
        }
        matrix[i][j] = 1;
        path.add("("+i+","+j+")");
        dfs(matrix, i+1, j, path);
        

        
        dfs(matrix, i-1, j, path);
        

        
        dfs(matrix, i, j+1, path);
        

        
        dfs(matrix, i, j-1, path);
        path.remove("("+i+","+j+")");

    }
}

全部评论

相关推荐

大专境巅峰电子狗:头一次看到这种简历,学术与技术学习,直接用技能概括就好了呀,实习经历要写丰富一点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务