题解 | #挤奶路径2# java

挤奶路径2

https://www.nowcoder.com/practice/4d315070d57b40bea7a8586793d656bc

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param cows int整型二维数组
     * @return int整型
     */
    public int dfs(int[][] grid, int row, int col, boolean hasCow) {
        int m = grid.length;
        int n = grid[0].length;
        if (row < 0 || row >= m || col < 0 || col >= n || grid[row][col] == 1) {
            return 0;
        }
        if (grid[row][col] == 2) {
            hasCow = true;
        }
        if (row == m - 1 && col == n - 1 && hasCow) {
            return 1;
        }
        int downPaths = dfs(grid, row + 1, col, hasCow);
        int rightPaths = dfs(grid, row, col + 1, hasCow);
        return downPaths + rightPaths;
    }

    public int uniquePathsWithCows(int[][] cows) {
        if (cows.length == 0 || cows[0].length == 0) {
            return 0;
        }
        return dfs(cows, 0, 0, false);
    }
}

该代码使用的编程语言是Java。

该题主要涉及了深度优先搜索(DFS)算法和二维数组的遍历。给定一个二维矩阵cows,其中0表示可通过的路径,1表示障碍物,2表示奶牛。需要计算从矩阵的左上角到右下角的路径数量,要求经过至少一只奶牛。

代码解释大纲:

  1. 创建一个dfs方法用于深度优先搜索:如果当前位置越界或者遇到障碍物,返回0表示没有路径。如果当前位置有奶牛,将hasCow标记为true。如果到达右下角,且经过奶牛位置,返回1表示找到一条有效路径。分别计算向下和向右的路径数量,递归调用dfs方法。返回总的路径数量,即向下和向右路径数量之和。
  2. 创建uniquePathsWithCows方法用于调用dfs方法计算路径数量:如果输入的二维数组为空,直接返回0。调用dfs方法,初始位置为左上角(0, 0),hasCow初始值为false。返回最终的路径数量。
  3. 以上是根据题目中给出的代码进行的修改,包括参数类型转换和一些语法调整。
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务