BRAVE DUCK 오답 이유를 모르겠어요... ysy 안녕하세요. BRAVE DUCK 문제를 BFS 전수 탐색을 이용해 풀어보았는데요. 주어진 예제는 답이 옳게 나오는 걸 확인했는데, 오답 결과를 받게되네요... 제 코드에 어떤 논리적 오류가 있는걸까요...ㅠㅠ 도와주세요!!! #include <stdio.h> int gStartX; int gStartY; int gFinishX; int gFinishY; int gJump; int gDx[] = {0, 1, 0, -1}; int gDy[] = {-1, 0, 1, 0}; int gArr[2001][2001] = {0}; int gSelected[2001][2001] = {0}; int gFlag; void braveDuck(int x, int y, int jumpCount) { if(jumpCount > gJump || gFlag == 1) { return; } int i; for(i=0; i<4; i++) { if(gFlag == 1) break; int tempX = x + jumpCount*gDx[i]; int tempY = y + jumpCount*gDy[i]; if((tempX < 0 || tempX > 2000) || (tempY<0 || tempY>2000)) continue; if(tempX == gFinishX && tempY == gFinishY) { gFlag = 1; break; } if(gArr[tempX][tempY] == 1 & gSelected[tempX][tempY] != 1) { if(jumpCount > 1) jumpCount = 1; gSelected[tempX][tempY] = 1; braveDuck(tempX, tempY, jumpCount); } else { if(i==3) { ++jumpCount; //printf("increase jump - x : %d, y : %d, jump : %d\n", tempX, tempY, jumpCount); braveDuck(x, y, jumpCount); //jumpCount --; } else continue; } } } int main() { int testCase; scanf("%d", &testCase); int tcCount; for(tcCount = 0; tcCount < testCase; tcCount++) { gFlag = 0; scanf("%d", &gJump); scanf("%d", &gStartX); scanf("%d", &gStartY); scanf("%d", &gFinishX); scanf("%d", &gFinishY); gStartX += 1000; gStartY += 1000; gFinishX += 1000; gFinishY += 1000; gSelected[gStartX][gStartY] = 1; gArr[gStartX][gStartY] = 1; gArr[gFinishX][gFinishY] = 1; int stoneNum; scanf("%d", &stoneNum); int i; for(i=0; i<stoneNum; i++) { int index1, index2; scanf("%d %d", &index1, &index2); index1 += 1000; index2 += 1000; gArr[index1][index2] = 1; } braveDuck(gStartX, gStartY, 1); if(gFlag == 0) printf("NO\n"); else printf("YES\n"); // init int j, k; for(j=0; j<2001; j++) { for(k=0; k<2001; k++) { gSelected[j][k] = 0; gArr[j][k] = 0; } } } return 0; } 8년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
ysy
안녕하세요.
BRAVE DUCK 문제를 BFS 전수 탐색을 이용해 풀어보았는데요.
주어진 예제는 답이 옳게 나오는 걸 확인했는데,
오답 결과를 받게되네요...
제 코드에 어떤 논리적 오류가 있는걸까요...ㅠㅠ
도와주세요!!!
8년 전