最长路径的个数_美团笔面试算法题解答

图片说明

这个题目的解决方案我采用的是dfs加上回溯的方法

import java.util.Scanner;

public class Main {
    private static int maxLen = 0;
    private static int[][] steps = {{1,0},{-1,0},{0,1},{0,-1}};
    private static boolean[][] arr;
    private static int num = 0;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        arr = new boolean[m][n];
        sc.close();
        if(m <=0 || n<= 0)
            System.out.println(0);
        else{
            dfs(0,0,1);
            System.out.println(num);
        }
    }

    public static int dfs(int startX, int startY, int currentLen){
        if(startX>=arr.length || startY>=arr[0].length || startY<0 || startX<0)
            return 0;
        if(arr[startX][startY])
            return 0;

        arr[startX][startY] = true;
        if(startX == arr.length - 1 && startY == arr.length -1){ // 走完了
            if(currentLen == maxLen){
                num ++;
            }else if(currentLen > maxLen){
                num = 1;
                maxLen = currentLen;
            }
        }
        for(int[] step:steps){
            int x = startX+step[0];
            int y = startY+step[1];
            int status = dfs(x,y,currentLen+1);
            if(status == 1){
                arr[x][y] = false;
            }
        }
        return 1;
    }
}
全部评论

相关推荐

02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务