반응형
https://www.acmicpc.net/problem/1890
1890번: 점프
첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장
www.acmicpc.net
최초 경로에 대해서는 DP를 이용하여 가능한 경로를 탐색하여 기억해두고,
중복 경로에 대해서는 그 경로의 가능한 경로 수를 그대로 더해주었습니다.
#include <cstdio>
int n, map[100][100];
long long int dp[100][100] = { 0 };
long long int f(int x, int y) {
if (x == n-1 && y == n-1) return 1;
if (dp[x][y] == 0 && map[x][y] != 0) { // 방문하지 않았던 지점, 이동 거리 1 이상인 경우
int xx = x + map[x][y];
int yy = y + map[x][y];
if (xx < n) dp[x][y] += f(xx, y);
if (yy < n) dp[x][y] += f(x, yy);
}
return dp[x][y];
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) scanf("%d", &map[i][j]);
printf("%lld", f(0, 0));
}
반응형
'Algorithm' 카테고리의 다른 글
백준 2294 : 동전 2 (0) | 2021.11.12 |
---|---|
백준 15989 : 1, 2, 3 더하기 4 (0) | 2021.11.12 |
백준 8112 : 0과 1 - 2 (0) | 2021.11.12 |
백준 8111 : 0과 1 (0) | 2021.11.12 |
백준 2696 : 중앙값 구하기 (0) | 2021.11.12 |