2012-02-10 6 views
2

내가 해결할 수없는 인터뷰에서이 질문을 보았습니다. mxn 그리드의 왼쪽에서 오른쪽 위 모퉁이까지 최단 경로 수를 계산하는 코드입니다. 어떻게 해결할 수 있을까요?사각형 모서리에서 최단 경로 모서리 모서리

+0

http://stackoverflow.com/questions/9105699/algorithm-for-finding-all-paths-in -a-nxn-grid http://stackoverflow.com/questions/9172053/all-possible-moves-in-a-5x5-grid http://stackoverflow.com/questions/9051254/finding-points-in -a-grid-with-exactly-k-paths-to-them 2 주 내에 적어도 세 가지 동일한 질문이있었습니다. 검색을 사용하려고 했습니까? – OleGG

답변

2
+2

이 답변은 면접관이 "어떻게 해결할 수 있습니까?"라고 묻는다면 내 "돌아 가기"대답을 상기시켜줍니다. 내 대답은 : "일부 수학 *." –

+0

인터뷰 질문의 유일한 점은 당신이 동적 프로그래밍에 익숙한지를 확인하는 것입니다. 나는 낚시를하는 남자를 가르치고 있습니다. – ivancho

+0

@ivancho :이 특정 문제를 해결하기 위해 동적 프로그래밍을 사용할 필요가 전혀 없습니다. 솔루션은 O (1) 시간 및 공간에서 찾을 수 있습니다. 힌트 : 최단 경로 길이는'm + n '이며, 따라서 * 가장 짧은 경로에는 * 정확히 *'m' 가로 및'n' 세로 간격이 있습니다. 그러나 순서는 임의적 일 수 있습니다. –

4

하는 솔루션을 당신이 그것을 해결하고자하는 가정,하지만 : × 1, × 2, (m-1) ×를 (N-1)

2

이 문제는 고려해야 개인 케이스가 this question 인 경우 오른쪽 상단 모서리로 끝나는 모든 패스로만 제한됩니다.

단순화를 위해 n * n 행렬을 가정합니다. [m * n으로 일반화 할 수 있습니다. 다른 하나 개의 코너에서 각 경로가 excactly2n 그들을 밖으로 이동이
주 - 정확히 n 이동 "최대"이며, 나머지는 "오른쪽"그래서

, 모든 귀하의 경로를 표시 할 수 있습니다 choose(2n,n) : 정확히 n비트 이진 벡터의 길이 2n 1.

바이너리 벡터의 수가 O(1)에 근접 식으로 계산 될 수로 설정.

n * m 행렬로 일반화하십시오. 모서리에서 다른 모서리까지의 경로에 몇 개의 단계가 있습니까? 얼마나 많은 사람들이 "옳은가?" 새 행렬에 선택 수식을 암시하고 이전에 얻은 결과와 동일한 결과를 제공하는지 확인하십시오. n=m