#include<stdio.h> #include<algorithm> using namespace std; const int fx[] = { 1, -1, 0, 0 }, fy[] = { 0, 0, 1, -1 }; int m, n, map[500][500], dp[500][500]; int f(int x, int y) { if (x < 0 || y < 0 || x >= m || y >= n) return 0; if (dp[x][y] >= 0) return dp[x][y]; int ret = 0; for (int i = 0; i < 4; i++) if (map[x][y]>map[x + fx[i]][y + fy[i]]) ret += f(x + fx[i], y + fy[i]); return dp[x][y] = ret; } int main() { scanf("%d %d", &m, &n); for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) scanf("%d", &map[i][j]), dp[i][j] = -1; dp[m - 1][n - 1] = 1; printf("%d", f(0, 0)); return 0; }
1520번: 내리막 길
https://www.acmicpc.net/problem/1520
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기