QUADTREE 질문드립니다.

  • cocobo123
    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일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.