백준 내리막길
업데이트:
내리막길
dfs로 내리막길을 확인하고 한번 방문한 곳은 값을 초기화 시키는 dp로 구현 dfs+dp 조합으로 이것도 다른 블로그를 참고했다. dp는 역시 어렵..
import java.util.Scanner;
public class Downhil {
static int m;
static int n;
static int[] x = {1,-1,0,0};
static int[] y = {0,0,1,-1};
static int[][] table;
static int[][] dp;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
m = sc.nextInt();
n = sc.nextInt();
table = new int[m][n];
dp = new int[m][n];
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
table[i][j] = sc.nextInt();
dp[i][j] = -1;
}
}
dfs(0,0);
System.out.println(dp[0][0]);
}
private static int dfs(int i, int j) {
if(i == m-1 && j == n-1) return 1;
if(dp[i][j] != -1) return dp[i][j];
dp[i][j] = 0;
for(int k = 0; k < 4; k++) {
int nx = i + x[k];
int ny = j + y[k];
if(nx >= 0 && ny >= 0 && nx < m && ny < n) {
if(table[i][j] > table[nx][ny]) {
dp[i][j] += dfs(nx,ny);
}
}
}
return dp[i][j];
}
}
댓글남기기