Open Balloon208 opened 9 months ago
Q1.
1 0
0 1
상태에서
1 *
* 1
으로 지나가집니다. 사선으로 되어있는 벽으로 생각이 되는데, 막아야 할까요?
Q2.
1 0
0 0
상태에서
1 *
* 0
으로 갈지
1 *
* *
으로 갈지 고민입니다.
전체에 관한 해답 Q1
Q2 위의 경우로 할 경우, 대각선의 else if 문을 다음과 같이 수정합니다.
else if(!closedlist[ny][nx] && isUnBlocked(map, ny, nx) && (isUnBlocked(map, y, nx) || isUnBlocked(map, ny, x)))
아래의 경우로 할 경우, 대각선의 else if과 도착 조건문을 다음과 같이 수정합니다.
// 도착 조건 문
if(isDestination(ny, nx, dst) && (isUnBlocked(map, y, nx) && isUnBlocked(map, ny, x)))
// 대각선
else if(!closedlist[ny][nx] && isUnBlocked(map, ny, nx) && (isUnBlocked(map, y, nx) && isUnBlocked(map, ny, x)))
현재 어떤 방식으로 할 지 고민중입니다.
// 도착 조건 문
if(isDestination(ny, nx, dst) && (isUnBlocked(map, y, nx) && isUnBlocked(map, ny, x)))
을 사용하기로 결정했습니다!
테스트 케이스를 여러 개 짬으로써, 제가 구현한 A* 알고리즘의 반례나 한계점을 찾아보기 위함입니다.
2는 시작점이고, 3은 도착점이며, 시작점과 도착점은 각각 1개씩만 있어야 합니다.
0은 빈 공간이며, 1은 벽(장애물) 입니다.
입력은 다음과 같은 예시로 작성하시면 됩니다.
출력
주의 : 맵을 그릴 때, 숫자간의 띄어쓰기는 필수입니다.