stronghsg   4년 전

아래와 같이 짰는데요..

혹시 틀린 부분을 지적받을 수 있을까요?

gyunghoe   4년 전

제가 봤을 때는 두 가지 문제점이 있는 것 같아요.

첫째는 시간 초과의 문제에요. 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)의 벽을 뚫지 못해요.

이 문제는 예외처리 잘 해서 큐로 풀어도 되지만 덱을 써서 벽을 안뚫는 경우에는 덱의 앞에, 벽을 뚫는 경우에는 덱의 뒤에 원소를 삽입하는 것도 방법이라고 생각해요.


댓글을 작성하려면 로그인해야 합니다.