웹마스터 팁

[OsE=] 최단 거리...

2002.03.02 22:42

OsE=

PHP보다는 알고리즘에 가깝죠...

일단

왼쪽 하단에서 오른쪽 상단으로 이동할때의 최단거리는

오른쪽 위쪽으로만 움직여서만 가면 최단거리입니다.

무조건말이죠 -0- 그건 여러분들이 일일이 해보거나

수학적으로 계산해보아도 저 명제는 성립합니다.

여기서 문자 실험을해야하는건가?

-_-좀 쉬운방법으로 풀이를 해보죠

-map-(참고로 이건 2차원변수)
00004
00000
02200
00222
30000

여기서 시작점은 3, 도착점은 4라고하고 2는 장애물이라고 합시다
그렇다면 일단... -_-3에서 갈수있는 길을 2가지길입니다.
그리고 모두 위, 오른쪽입니다.

그렇다면,

-map-
00004
00000
02200
10222
31000

지나간 자리는 1로 표시를 해줍니다.

그리고 3차원배열에

-maps[1]-(이건 3차원배열입니다
00000
00000
00000
00000
11000
-maps[2]-(이건 3차원배열입니다
00000
00000
00000
10000
10000

그리고 다시
-map-
00004
00000
02200
10222
31000 에서 또 모든곳을 갈수있네요 2경로에서 다~(오른쪽 위로만 가면 최단경로니까)

그럼
-maps[3]-(이건 3차원배열입니다
00000
00000
00000
00000
11100
-maps[4]-(이건 3차원배열입니다
00000
00000
00000
0!000
11000
-maps[5]-(이건 3차원배열입니다
00000
00000
00000
11000
10000
-maps[6]-(이건 3차원배열입니다
00000
00000
10000
10000
10000

그리고 다시
-map-
00004
00000
12200
11222
31100

아. 그리고 이제 갈수있는 길은 2개밖에없네요.. 하나는 오른쪽으로만  다른건 위로 밖에만... 그러면

-maps[7]-(이건 3차원배열입니다
00000
10000
10000
10000
10000
-maps[8]-(이건 3차원배열입니다
00000
00000
10000
10000
11110


이런식으로 -_-;; 하는겁니다.. -_-;; 제가 더이상 시간 때문에 끝까지 못하겠고요

생각을 해보세요^-^