[LeetCode 62 Unique Paths] 동적 계획 계산 경로
m * n 의 격자 를 지정 합 니 다. 시작 점 은 격자 의 가장 왼쪽 위 이 고 종점 은 격자 의 가장 오른쪽 아래 입 니 다. 한 로봇 은 아래 와 오른쪽으로 만 이동 할 수 있 습 니 다. 로봇 이 시작 점 에서 종점 까지 모두 몇 가지 중복 되 지 않 는 경 로 를 구 해 야 합 니 다.문제 의 입력 은 격자 의 길이 m 와 너비 n 이 고 출력 은 서로 다른 경로 의 수량 입 니 다.
2. 사고 분석
이 문 제 는 동적 으로 계획 하 는 방법 이 매우 간단 하 다. 로봇 이 출발점 부터 격자 안의 모든 칸 의 서로 다른 경로 수 를 계산 하고 경로 수량 을 같은 크기 의 m * n 의 행렬 에 저장 하면 우 리 는 종점 에 대응 하 는 행렬 값 만 출력 하면 된다.경로 중의 모든 격자 에 대해 로봇 은 격자 위 나 격자 왼쪽 을 거 쳐 격자 에 도착 할 수 있다. 행렬 M 에 대응 하면 우 리 는 M [i] [j] = M [i - 1] [j] + M [i] [j - 1] 을 뚜렷하게 얻 을 수 있다. 격자 맨 위 와 격자 맨 왼쪽 은 모두 하나의 경로 만 도착 하기 때문에 M [0] [j] = 1 과 M [i] [0] = 1 이 있다. 그 중에서 i, j 는 m, n 이내 의 모든 숫자 를 나타 낸다.이 두 가지 공식 에 따 르 면 우 리 는 로봇 이 모든 격자 에 도착 하 는 경로 수 를 추정 할 수 있다. 즉, 완전한 행렬 M 값 을 얻 고 M [m - 1] [n - 1] 을 출력 하면 된다.
3. 코드 구현
class Solution {
public:
int uniquePaths(int m, int n) {
vector> result(m,vector (n,1));
for(int i = 1; i < m;i++) {
for(int j = 1; j < n;j++) {
result[i][j] = result[i - 1][j] + result[i][j - 1];
}
}
return result[m-1][n-1];
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.