jumpgame(외발뛰기) 런타임 오류해결좀요.

  • dusgurwhd3
    dusgurwhd3

    RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow) 이 오류가 왜뜨는지 도저히 모르겟습니다...

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <cstring>
    #include <cmath>
    #include<algorithm>
    
    using namespace std;
    
    int c, n;
    int board[100][100];
    int cache[100][100];
    
    int main()
    {
        cin >> c;
        if (c > 50||c<=0)
            return 0;
        cin >> n;
        if (n < 2 || n>100)
            return 0;
        memset(cache, -1, sizeof(cache));
        for (int z = 0; z < c; z++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
    
                    cin >> board[i][j];
                }
            }
    
            bool jump(int y, int x);
    
            if (jump(0, 0) == 1)
                cout << "YES";
            else
                cout << "NO";
        }
    
    
        return 0;
    }
    bool jump(int y, int x) {
        if (y >= n || x >= n)
            return 0;
        if (y == (n - 1) && x == (n - 1))
            return 1;
        int & ret = cache[y][x];
        if (ret != -1)
            return ret;
        int jumpsize = board[y][x];
        return jump(y + jumpsize, x) || jump(y, x + jumpsize);
    }
    
    ~~~ c++
    

    6년 전
2개의 댓글이 있습니다.
  • rumble99
    rumble99

    이미 해결 하셨을거 같지만, 글을 올려봅니다. 각 테스트 케이스에 대하여 정답이 한 줄에 나와야 하는데 "cout<<"YES";" , "cout<<"NO";" 이렇게 하시면 테스트 케이스 세 개가 모두 정답이라고 했을 시, "YESYESYES" 이렇게 나오게 됩니다. 개행을 넣어서 재채점 받아보시기 바랍니다.


    6년 전 link
  • rumble99
    rumble99

    그리고 "n <= 100" 까지 허용이 되던데 이차원 배열을 처음에 100의 크기로만 할당 해 놓으시면 N 값이 100이 입력되었을 때 오류가 발생할 수 밖에 없습니다.


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