题解 | #挤奶路径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]; } }