return ret= (f(row + jumpsize, col) + f(row, col + jumpsize));
이런식으로 ||대신 +로 경로를 세어서,
main에서 0보다 크면 YES를 하고, 아니면 NO를 프린트 했는데 왜 이렇게 하면 틀렸습니다가 뜨는지 이해되지 않습니다.
#include가 잘 뜨지 않아서 생략했습니다.
stidio.h, stdlib.h, string.h #pragma warning (disable:4996)를 사용했습니다
int n;
int a[100][100];
int cache[100][100];
int f(int row, int col);
int main() {
freopen("a.inp", "r", stdin);
freopen("a.out", "w", stdout);
int how;
scanf("%d", &how);
for (int e = 0; e < how; e++) {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
memset(cache[i], -1, sizeof(cache[0]));
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
int result = f(0, 0);
if (result >0) printf("YES\n");
else printf("NO\n");
}
fclose(stdin);
fclose(stdout);
}
int f(int row, int col) {
if (row > n - 1 || col > n - 1) return 0;
if (row == n - 1 && col == n - 1) return 1;
int& ret = cache[row][col];
if (ret != -1) return ret;
int jumpsize = a[row][col];
return ret= (f(row + jumpsize, col) + f(row, col + jumpsize));
}
4년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
object1997
return ret= (f(row + jumpsize, col) + f(row, col + jumpsize));
이런식으로 ||대신 +로 경로를 세어서,
main에서 0보다 크면 YES를 하고, 아니면 NO를 프린트 했는데 왜 이렇게 하면 틀렸습니다가 뜨는지 이해되지 않습니다.
#include가 잘 뜨지 않아서 생략했습니다.
stidio.h, stdlib.h, string.h #pragma warning (disable:4996)를 사용했습니다
int n;
int a[100][100];
int cache[100][100];
int f(int row, int col);
int main() {
freopen("a.inp", "r", stdin);
freopen("a.out", "w", stdout);
}
int f(int row, int col) {
if (row > n - 1 || col > n - 1) return 0;
if (row == n - 1 && col == n - 1) return 1;
int& ret = cache[row][col];
if (ret != -1) return ret;
int jumpsize = a[row][col];
return ret= (f(row + jumpsize, col) + f(row, col + jumpsize));
}
4년 전