QUADTREE 질문드립니다. cocobo123 제가 생각한 방법은 받은 문자열을 문제에 제시된 그림 (b)처럼 트리로 만들어서 풀려했어요. 그래서 tree[1001][5]를 만들어서 받은 문자열 pic[1001]이 x를 만나면 계속 타고 내려가고 반환값은 가장 바닥의 마지막 인덱스를 죽죽 반환해주어 다음으로 넘겨주는 식으로 했습니다. 그런데 계속 오답이 나오는데 혹시 짚어주실수있을까요??? #include<stdio.h> int C; char pic[1001]; int tree[1001][5]; int makeTree(int index) { int result; if (pic[index] == 'w' || pic[index] == 'd') return index + 1; tree[index][0] = 1; int temp = index + 1; for (int i = 1; i <= 4; i++) { tree[index][i] = temp; if (pic[temp] == 'x') temp = makeTree(temp); temp++; } temp--; return temp; } void printTree(int index) { printf("%c", pic[index]); if (tree[index][0] == 0) return; for (int i = 3; i <= 4; i++) { int temp = tree[index][i]; if (pic[temp] == 'x') printTree(temp); else printf("%c", pic[temp]); } for (int i = 1; i <= 2; i++) { int temp = tree[index][i]; if (pic[temp] == 'x') printTree(temp); else printf("%c", pic[temp]); } return; } int main() { int start = 0; scanf("%d", &C); while (C--) { scanf("%s", pic); makeTree(0); while (tree[start++][0] == 1)break; printTree(--start); printf("\n"); for (int i = 0; i < 1001; i++) { pic[i] = '\0'; tree[i][0] = tree[i][1] = tree[i][2] = tree[i][3] = tree[i][4] = 0; } } return 0; } 8년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
cocobo123
제가 생각한 방법은
받은 문자열을 문제에 제시된 그림 (b)처럼 트리로 만들어서 풀려했어요.
그래서 tree[1001][5]를 만들어서
받은 문자열 pic[1001]이 x를 만나면 계속 타고 내려가고 반환값은 가장 바닥의 마지막 인덱스를 죽죽 반환해주어 다음으로 넘겨주는 식으로 했습니다. 그런데 계속 오답이 나오는데 혹시 짚어주실수있을까요???
8년 전