JUMPGAME문제 질문입니다! Swiiiiis 아래 코드에서 주석을 안한부분으로 제출했을 때 시간초과가 되질않았지만, 아래부분으로 했을 경우 시간초과가 되었습니다. 이 두 개의 차이점이 궁금합니다.! return ret = (jump(y + jumpSize, x) || jump(y, x + jumpSize)); /* if (jump(y + jumpSize, x) == 1 || jump(y, x + jumpSize) == 1) { return 1; } else return 0; */ 아래는 코드 전체입니다. #include <iostream> #include <vector> #include <string> #include <cstring> using namespace std; int Board[100][100]; int Boardsize; int cache[100][100]; int jump(int y, int x) { if ((y >= Boardsize) || (x >= Boardsize)) { return 0; } if ((y == Boardsize - 1) && (x == Boardsize - 1)) { return 1; } //메모이제이션 int &ret = cache[y][x]; if (ret != -1) return ret; int jumpSize = Board[y][x]; return ret = (jump(y + jumpSize, x) || jump(y, x + jumpSize)); /* if (jump(y + jumpSize, x) == 1 || jump(y, x + jumpSize) == 1) { return 1; } else return 0; */ }int main() { int testcases; cin >> testcases; while(testcases--) { memset(cache, -1, sizeof(cache)); cin >> Boardsize; for (int y = 0; y < Boardsize; y++) { for (int x = 0; x < Boardsize; x++) { cin >> Board[y][x]; } } int result = jump(0, 0); if (result == 1) cout << "YES" << endl; else cout << "NO"<<endl; } }~~~ 8년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
Swiiiiis
아래 코드에서 주석을 안한부분으로 제출했을 때 시간초과가 되질않았지만, 아래부분으로 했을 경우 시간초과가 되었습니다. 이 두 개의 차이점이 궁금합니다.!
아래는 코드 전체입니다.
8년 전