제가 봤을 때는 두 가지 문제점이 있는 것 같아요.
첫째는 시간 초과의 문제에요. 99번째 줄의 system("pause")때문에 프로그램이 끝나지 않아서 시간초과가 생겨요.
둘째는 방문여부 설정의 문제에요. 위 코드에
4 4
0101
0101
0001
1110
을 입력하면 -1이 나와요. 실제 값은 7이 나와야 해요. 25번째 줄에
cout << cur_y << " , " << cur_x << " with " << cur_w << endl; 코드를 넣어보면
0 , 0 with 0
0 , 1 with 1
1 , 0 with 0
0 , 2 with 1
1 , 1 with 1
2 , 0 with 0
1 , 2 with 1
2 , 1 with 1
3 , 0 with 1
2 , 2 with 1
-1
이런 출력결과가 나오는데요, cost(2,1)지점을 벽을 부수지 않고 갈수 있음에도 벽을 부수고 가는 결과를 최선으로 판정하기 때문에 (3,2) 혹은 (2,3)의 벽을 뚫지 못해요.
이 문제는 예외처리 잘 해서 큐로 풀어도 되지만 덱을 써서 벽을 안뚫는 경우에는 덱의 앞에, 벽을 뚫는 경우에는 덱의 뒤에 원소를 삽입하는 것도 방법이라고 생각해요.
stronghsg 4년 전
아래와 같이 짰는데요..
혹시 틀린 부분을 지적받을 수 있을까요?