题解 | #挤奶路径2#

挤奶路径2

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

import java.util.*;


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

    public int path(int[][] cows , int rs , int cs , int re , int ce , int num){
        if(rs >= re || cs >= ce)
            return num;
        int m = re - rs;
        int n = ce - cs;
        int[][] dp = new int[m][n];
        for (int i = rs; i < re; i++) {
            if(cows[i][0] == 0 || cows[i][0] == 2)
                dp[i - rs][0] = num;
        }
        for (int j = cs; j < ce; j++) {
            if(cows[0][j] == 0 || cows[0][j] == 2)
                dp[0][j - cs] = num;
        }
        for (int i = rs + 1; i < re; i++) {
            for (int j = cs + 1; j < ce; j++) {
                if(cows[i][j] == 0 || cows[i][j] == 2)
                    dp[i - rs][j - cs] = dp[i - rs - 1][j - cs] + dp[i - rs][j - cs - 1];
            }
        }
        return dp[m - 1][n - 1];
    }
}

全部评论

相关推荐

Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务