QUADTREE 질문드립니다.

  • User Avatar
    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;
    }
    

    9년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.