题解 | #挤奶路径2#

挤奶路径2

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

知识点:二维动态规划

基本的思想还是二维的动态规划,每一步要计算上一步的两种方式到达该位置的和,遇到障碍物则置零,这道题目的难点在于需要先找到元素值为2的位置,然后根据该位置为起点,向右向下再达到右下角终点位置,相当于两次路径寻找,答案为两次路径数的乘积。

Java题解如下

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param cows int整型二维数组 
     * @return int整型
     */
    public int uniquePathsWithCows (int[][] cows) {
        // write code here
        int m = cows.length, n = cows[0].length;
        int[][] dp = new int[m + 1][n + 1];
        dp[0][1] = 1;
        int cnt1 = 0;
        int row = 0, column = 0;
        for(int i = row; i < m; i++) {
            for(int j = column; j < n; j++) {
                if(cows[i][j] != 1) {
                    dp[i + 1][j + 1] = dp[i][j + 1] + dp[i + 1][j];
                    if(cows[i][j] == 2) {
                        cnt1 = dp[i + 1][j + 1];
                        dp[i + 1][j + 1] = 1;
                        row = i;
                        column = j;
                        Arrays.fill(dp[i], 0);
                        for(int k = 0; k < m; k++) {
                            dp[k][j] = 0;
                        }
                        
                    }
                }
            }
        }
        return cnt1 * dp[m][n];
    }
}

全部评论

相关推荐

10-10 17:54
点赞 评论 收藏
分享
accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务