필자는 DFS를 사용했는데,
int
dirt[4]={-1,0,1,0};
과 같이 선언하고
08 | int DFS( int y, int x, int H /*최대 높이*/, int W /*최대 너비*/) |
09 | { |
10 | if ( /* Base Case; 기저 케이스 */ ) return 0; |
15 | for ( int i=0; i < 4; ++i) |
16 | DFS( y+dirt[(i+3)%4], x+dirt[i], H, W ); |
17 | return 1; |
18 | } |
위와 같이 [상(-1,0), 우(0,-1), 하(+1,0), 좌(0,+1) ]의 조합을 배열 하나로 사용했다.여기서 DFS가
return
1;
을 했다. 이건 한 덩어리(구간)의 출발점만 리턴될 것이다.
왜냐하면 기저 케이스에서 "방문한 노드"는 return
0;
으로 걸러질 것이기 때문이다.
댓글 없음:
댓글 쓰기