MORSE 질문좀 드릴게요

  • cspark89
    cspark89
    #include<iostream>
    
    using namespace std;
    
    int matrix[222];
    unsigned long long int comb[204][204];
    int loop;
    
    void _Comb(int n, int m)
    {
        for(int i=0;i<=n;i++)
        {
            comb[0][i] = 1;
        }
        for(int i=0;i<=m;i++)
        {
            comb[i][0] = 1;
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                comb[i][j] = comb[i-1][j] + comb[i][j-1];
            }
        }
    }
    
    void _Init_matrix ()
    {
        for(int i = 0;i < 222 ; i++)
        {
            matrix[i] = 0;
        }
        loop = 0;
    }
    
    int _Set_matrix (int n, int m, int k)
    {
        if(n == 0 && m == 0)
        {
            return 0;
        }
    
        unsigned long long int cutout;
    
        if(n + m - 2 < 0)
        {
            cutout = 1;
        }
        else if(n - 1 < 0 && n + m - 2 >= 0)
        {
            cutout = comb[n + m - 2][m - 1];
        }
        else if(n - 1 >= 0 && n + m - 2 >= 0)
        {
            cutout = comb[n + m - 2][n - 1];
        }
    
        if(n > 0 && k <= cutout)
        {
            _Set_matrix (n - 1, m, k);
            matrix[loop++] = 0;
            return 0;
        }
        _Set_matrix (n, m - 1, k - cutout);
        matrix[loop++] = 1;
        return 0;
    }
    
    int main(void)
    {
        int case_cnt;
        int n, m, k;
    
        cin >> case_cnt;
        while(case_cnt--)
        {
            cin >> n >> m >> k;
    
            _Comb(n + m, n + m);
            _Set_matrix(n, m, k);
            for(int i=n+m-1;i>=0;i--)
            {
                if(matrix[i] == 0)
                {
                    cout << "-";
                }
                if(matrix[i] == 1)
                {
                    cout << "o";
                }
            }
            cout << endl;
            _Init_matrix();
        }
    }
    

    답은 다 나오고 여러가지 오류 날만한 경우 모두 넣어봤는데
    RTE (SIGSEGV: segmentation fault, probably incorrect memory access) 만 뜨고 정답이 안나오네요 도와주세요 ㅠ


    11년 전
1개의 댓글이 있습니다.
  • JongMan
    JongMan

    아주 큰 입력을 여러 개 생성해서 한번 넣어보세요 (n, m이 모두 100에 가까운)


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