LeetCode-63 : 다른 경로 II

하나, 제목 설명

그림 삽입 설명 여기

둘째, 문제 해결 아이디어

의 고급 버전이 다른 경로는 , dp대답, 그것은 분명 그 두 차원 동적 프로그래밍

  • 정의 dp의미 : 정의 [ 나는 ] [ 제이 ] DP [I] [J] 좌표 올 ( 나는 , 제이 ) (I, J) 이이 도보 거리에
  • 정의 경계 조건
    • 단지 하나의 움직임이 있기 때문에 첫 번째 열의 첫 번째 행에 장애물에서 첫 번째 열의 첫 번째 행은 1이다 확실히
    • 첫 번째 열의 첫 번째 줄에 장애물이있는 경우 그 경우 그러나, 당신은 단지 지점 뒤에 장애물을 포함하여 장애물의 전면으로까지 갈 수 dp값이 0
      그림 삽입 설명 여기
  • 상태 천이 방정식의 설립
    • 있는 현재의 로봇을 가정 ( 나는 , 제이 ) (I, J) , 기본dp[i][j] = 0;
      • 지점 인 경우가 장애물, 그래서 dp[i][j]에만 0이 될 수 있습니다
      • 지점 인 경우 장애물이 없다
        • 위의 점
          • 다음 위의 경로가 차단 장애물 만 다음 왼쪽에서 올 수있다 dp[i][j]동일, 플러스 0
          • 장애물이 없습니다, 다음, 위에서 올 수dp[i][j] += dp[i - 1][j]
          • 마무리 :dp[i][j] += (obstacleGrid[i][j - 1] ? 0 : dp[i][j - 1]);
        • 왼쪽 지점
          • 마찬가지로 :dp[i][j] += (obstacleGrid[i - 1][j] ? 0 : dp[i - 1][j]);

셋째, 문제 해결 코드

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        auto m = obstacleGrid.size();
        auto n = obstacleGrid[0].size();
        unsigned int dp[m][n];

        bool flag = 0;
        for(int i = 0; i < m; i++){
            if(!obstacleGrid[i][0] && !flag)
                dp[i][0] = 1;
            else{
                dp[i][0] = 0;
                flag = 1;
            }   
        }

        flag = 0;
        for(int i = 0; i < n; i++){
            if(!obstacleGrid[0][i] && !flag)
                dp[0][i] = 1;
            else{
                dp[0][i] = 0;
                flag = 1;
            }
        }
        
        for(int i = 1; i < m; i++){
            for(int j = 1; j < n; j++){
                dp[i][j] = 0;
                if(obstacleGrid[i][j] == 0){
                    if(obstacleGrid[i][j - 1] == 0)
                    dp[i][j] += (obstacleGrid[i][j - 1] ? 0 : dp[i][j - 1]);
                    if(obstacleGrid[i - 1][j] == 0)
                        dp[i][j] += (obstacleGrid[i - 1][j] ? 0 : dp[i - 1][j]);
                }             
            }
        }
        return dp[m - 1][n - 1];
    }
};

넷째, 운영 결과

매우 거만 운영 결과의 그룹이 있습니다 :
그림 삽입 설명 여기
[0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0, 0,1,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1] [0,0,0,0,0,1, 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0, 0,0], [1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0, 0,0,0,0,0,0,0,1,0,0,1] [0,0,1,0,0,1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0], [0,0,0,1, 0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, 0,1,1,0], [1,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0, 0,0,0,0,1,0,0,0,0,0,0,0,0] [0,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0] [0,0, 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,0,0,1,0] [0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0, 0,0,0,0,1,1,0,0,0,1,0,0,0,0,0] [0,1,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0], [ 1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0, 1,0,1,0,0,0,0,1] [0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, 0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0] [0,1,0,1,0,0,0,0,1,0,0, 1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0] [0,1, 0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 0,0,1,1,0,1] [1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0,0, 0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0], [ 0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,1, 0,1,0,0,0,0,1,1] [0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0, 0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,1] [1,1,1,0,1,0,0, 0,0,1,0,0,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0, 0] [0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0, 0,0,0,0,0,0,0,0,1,1] [0,0,0,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0]0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0, 0,0,1,1,0,0,1,0,0,0,0,0,0] [0,0,1,0,0,0,0,0,0,0,1, 0,0,1,0,0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,0,1,1] [0,1, 0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0, 1,1,0,1,0,1] [1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0, 1,0,1,1,0,0,0,0,0,0,0,0,0,0,0] [0,0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1], [ 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, 1,0,0,0,1,0,0,0]0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0, 0,0,1,1,0,0,1,0,0,0,0,0,0] [0,0,1,0,0,0,0,0,0,0,1, 0,0,1,0,0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,0,1,1] [0,1, 0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0, 1,1,0,1,0,1] [1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0, 1,0,1,1,0,0,0,0,0,0,0,0,0,0,0] [0,0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1], [ 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, 1,0,0,0,1,0,0,0]

내 데이터 오버 플로우, 우리가 말하고 싶은 이야기의 직접적인 결과 dp로 설정되어있는 배열을 unsigned int피하기 오버 플로우 유형,
그림 삽입 설명 여기

게시 30 개 원래 기사 · 원의 찬양 3 · 조회수 816

추천

출처blog.csdn.net/weixin_44587168/article/details/105327121