반응형

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

+ Recent posts