JUMPGAME 질문입니다!! ㅠㅠ 도와주세요!ㅠㅠ

  • 1004zzangs
    1004zzangs

    런타임에러 질문입니다 ㅠㅠ
    알고리즘 문제해결전략에 나온대로 하고 있는데 몇번에 걸쳐 런타임 에러가 나옵니다!

    RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow) 이런 에러가 나오는데 어디가 틀린걸까요?

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    int board[100][100];
    int cache[100][100];
    
    int jump(int y, int x)
    {
        //기저사례
        if(y >= 100 || x >= 100)
            return 0;
        if(y == 100-1 && x == 100-1) 
            return 1;
    
        int &ret = cache[y][x];
        if (ret != -1)
            return ret;
    
        return ret = (jump(y+board[y][x], x) || jump(y, x+board[y][x]));
    }
    
    int main(void)
    {
        int test_case, maxsize;
        scanf("%d", &test_case);
    
        if(test_case < 0 || test_case > 50)
            exit(-1);
    
        for (int i = 0; i <test_case; i++)
        {
            scanf("%d", &maxsize);
            if(maxsize < 2 || maxsize > 100)
                exit(-1);
    
            memset(cache, -1, sizeof(cache)); 
            //멤셋을 이용해 cache[]초기화 but,한정적이니 조심
    
    
            for(int j = 0; j <maxsize; j++)
                for(int k = 0; k < maxsize; k++)
                    scanf("%d", &board[j][k]);
    
            if (jump(0,0) == 1)
                printf("YES\n");
            else
                printf("NO\n");
        }
    
    }
    

    6년 전
1개의 댓글이 있습니다.
  • Ychooni
    Ychooni

    기저사례가 일반적이지 않네요. maxsize 에 영향을 받아야 하는데, 무조건 100에 영향을 받네요.


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