LeetCode.62-- 다른 경로


  • 문제 설명 :

    왼쪽 코너 MXN 그리드에 위치한 로봇 (아래 "시작"이라는 점 그림을 시작).

    로봇은 오른쪽이나 아래로 한 단계를 이동할 수 있습니다. 로봇 ( "마침"이라는 다음 그림) 그리드의 오른쪽 하단 모서리에 도달하려고합니다.

    총 Q. 얼마나 많은 서로 다른 경로가 있습니까?

    예를 들어,지도는 7 × 3의 격자이다. 얼마나 많은 가능한 경로가 있나요? LeetCode 원래 제목

  • 분석 :

    장애물이 없기 때문에 이것은 비교적 단순한 동적 프로그래밍 문제 (2 개 손상된 다른 경로 격자) ,

    각 단계는 오른쪽이나 아래에있을 수 있기 때문에, 아주 분명하다, 당신은 각 격자의 첫 번째 행과 최초의 열은 1임을 알 수 있습니다 :

    단지 오른쪽 아래이기 때문에, 경로 2 → → 오른쪽 또는 오른쪽 아래에, 두 개의 위치를 ​​얻을 수있다. 유사하게, 첫 번째 열 이외의 다른 위치의 경로의 수의 첫 번째 행은 현재 위치와 전방 상부 경로 같다. 그래서 당신은 최종 경로를 얻을 수 있습니다 :

    dp[m-1][n-1] = dp[m-1][n-2] + dp[m-2][n-1]
  • 코드 구현 :

    public class UniquePaths_62{
        public static void main(String[] args) {
            Solution4 solution = new Solution4();
           int res = solution.uniquePaths(1,1);
            System.out.println(res);
        }
    
    }
    
    class Solution {
        public int uniquePaths(int m, int n) {
            //1.初始化第一行第一列
            int[][] dp = new int[m][n];
            for (int i = 0; i < dp.length; i++) {
                for (int j = 0; j < dp[0].length; j++) {
                    dp[0][j] = 1;
                    dp[i][0] = 1;
                }
            }
    
            for (int i = 1; i < dp.length; i++) {
                for (int j = 1; j < dp[0].length; j++) {
                    dp[i][j] = dp[i][j-1] + dp[i-1][j];
                }
            }
            return dp[m-1][n-1];
        }
    }

    성능 :

    (1) 시간 복잡도 : O (N * m)

    (2) 상기 공간 복잡도 : O (N * m)


  • 마지막으로 :

    제한 개인적으로 인해, 보웬 실수하거나, 부정확 한 표현 갱스터 비판을 환영하는 것이 불가피하다. 더 좋은 방법은 귀하의 의견을 떠날 코멘트 섹션을 환영 경우, 앞으로 다시 인쇄 소스를 나타 내기 위해 기억에 오신 것을 환영합니다. 코드 워드는 어떤 도움 경우, 보스 감사합니다, 늦게까지 깨어 커피 보상 컵을 환영, 쉬운 일이 아닙니다 ~~~

추천

출처www.cnblogs.com/coding-996/p/12324505.html