클래스 해결 {//比较简单的动态规划题 공개 INT uniquePaths ( INT의 m, INT의 N) { INT [] [] DP = 새로운 INT [m] [n]을; 위한 ( int로 ; 나는 <= m-1 난 ++ I = 0 ) { 대 ( INT의 J = 0; J <= N-1, J ++ ) { 경우 (I == 0 && J == 0 ) { DP [I을 [J]를 1 = ; } 다른 경우 (I == 0 ) { (DP)는 [I]은 [J]를 DP를 = [I] [J-1]; } 다른 경우 (j의 == 0 ) { (DP)는 [I]가 [j]가 DP가 = [I-1 ] [J]; } 다른 DP가 [I]는 [j]가 = DP [I-1] [J] + DP [I] [J-1 ]; } } 리턴 DP [m-1] [N-1 ]; } }
클래스 해결 { 공개 INT uniquePathsWithObstacles ( INT [] [] obstacleGrid) { INT m = obstacleGrid.length; INT N = obstacleGrid [0 ] .length; INT [] [] DP = 새로운 INT [m + 1] [N + 1 ]; 위한 ( int로 ; I <= m-1 난 ++ I = 0 ) { 대 ( INT의 J ++ J = 0; J <= N-1 ) { 경우 (obstacleGrid [I] [J] == 1 ) { [DP를 I] [J]를 = 0 ; } 다른 { 경우 (I == 0 && J == 0 ) { DP [I] [J] = 1 ; } 다른 경우 (j의 == 0 ) { (DP)는 [I]가 [j]가 DP가 = [I-1 ] [J]; } 다른 경우 (I == 0 ) { (DP)는 [I]는 [j]가 DP가 = [I] [J-1 ]; } 다른 { DP가 [I]는 [j]가 = DP [I-1] [J] + DP [I] [J-1 ]; } } } } 리턴 DP [m-1] [N-1 ]; } }