, , ( , ) (-). . . , .
, , .
.
, , A M*N. A[i, j]=0, (i, j) . A[i, j]=1.
(1, 1) (M, N).
( , ). .
, (1, 1). k k+1, .
, - backtracking ( - ), . ( : ). , . Way.
. ( (1, 1)).
if < - Neighbor Way, > thenbegin < Neighbor Way>; := Neighbor;end else < Way>;, . < Way>, Way 1.
, Way . .
Way , OptimalWay.
Finish:= False;< Way>;< Way (1, 1)>< OptimalWay >;repeat if < - Neighbor Way, > then begin < Neighbor Way>; := Neighbor; if (< (M, N)>)and (< OptimalWay Way>) then OptimalWay:= Way; end else begin if <Way > then Finish:= True else < Way>; end;until Finish;, , , Way OptimalWay. - , . , , . .
|
|
, ( , ). : , , , . Way OptimalWay .
Way | OptimalWay |
<(1,1)> | |
䔅 | / / |
<(1,1), (1,2), (2,2), (3,2), (3,1), (4,1), (5,1), (5,2), (5,3), (5,4), (5,5)> ( : ) | <(1,1), (1,2), (2,2), (3,2), (3,1), (4,1), (5,1), (5,2), (5,3), (5,4), (5,5)> |
/ / | |
<(1,1), (1,2), (2,2), (3,2), (3,1), (4,1), (5,1), (5,2), (5,3), (5,4)> | / / |
䔅 | / / |
<(1,1), (1,2), (2,2), (3,2), (3,1), (4,1), (5,1), (5,2), (5,3), (5,4), (4,4)> ( : ) | / / |
/ / | |
<(1,1), (1,2), (2,2)> | / / |
䔅 | / / |
<(1,1), (1,2), (2,2), (2,3), (2,4), (3,4), (4,4), (5,4), (5,3), (5,2), (5,1)> ( : ) | / / |
/ / | |
<(1,1), (1,2), (2,2), (2,3), (2,4), (3,4), (4,4), (5,4)> | / / |
䔅 | / / |
<(1,1), (1,2), (2,2), (2,3), (2,4), (3,4), (4,4), (5,4), (5,5)> ( : ) | <(1,1), (1,2), (2,2), (2,3), (2,4), (3,4), (4,4), (5,4), (5,5)> |
/ / | |
<(1,1), (1,2), (2,2), (2,3), (2,4)> | / / |
䔅 | / / |
<(1,1), (1,2), (2,2), (2,3), (2,4), (1,4), (1,5)> ( : ) | / / |
/ / | |
<> ( : , ) | / / |
8 , (1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 4), (4, 4), (5, 4), (5, 5).
:
1. .
2. .
. , , . , ( ).
:
. ( ), .
(1,1) | (1,2) | (2,2) | (3,2) (2,3) | (3,1) (2,4) | (4,1) (3,4) (1,4) | (5,1) (4,4) (1,5) | (5,2) (5,4) | (5,3) (5,5) |
: . . , , . , .
|
|
, (1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 4), (4, 4), (5, 4), (5, 5). .
, , , , , , , . , , .
.
:
1. .
2.
3.
4.
1. ? ?
2. ?
3. ? ? ?
4. , ? .
5. ?
6. ?
7. ? ?
8. . ?