ae878   7년 전

다른분들 코드랑 비교해도 딱히 다른점을 못찾겠는데

계속 틀리네요 ㅜㅜㅜ

부탁드립니다.

#include <stdio.h>
//BFS

int dw[8] = { -2, -2, -1, -1, 1, 1, 2, 2 };
int dh[8] = { -1, 1, -2, 2, -2, 2, -1, 1 };

int level[310][310] = { 0 };
int visit[310][310] = { 0 };

int width[100000] = { 0 };
int height[100000] = { 0 };

int l, startx, starty, wantx, wanty;

int head = 1, tail = 0;

int main() {

int T;

scanf("%d", &T);
while (T--) {
for (int i = 0; i < 310; i++) {
for (int j = 0; j < 310; j++) {
visit[i][j] = 0;
level[i][j] = 0;
}
}
for (int i = 0; i < 100000; i++) {
width[i] = 0;
height[i] = 0;
}

scanf("%d", &l);
scanf("%d %d", &startx, &starty);
scanf("%d %d", &wantx, &wanty);

head = 1;
tail = 0;

height[++tail] = starty;
width[tail] = startx;

level[starty][startx] = 0;
visit[starty][startx] = 1;

while (head <= tail) {

int curw = width[head];
int curh = height[head++];

if (startx==wantx  &&starty== wanty) {
printf("%d\n",level[curh][curw]);
break;
} else{
for (int i = 0; i < 8; i++) {

int aw = curw + dw[i];
int ah = curh + dh[i];

if (aw >= 0 && aw < l && ah >= 0 && ah < l &&visit[ah][aw] != 0) {
width[++tail] = aw;
height[tail] = ah;

level[ah][aw] = level[curh][curw] + 1;
visit[ah][aw] = 1;

}
}
}
}
}

return 0;
}

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