DFS-回溯
递归
private static int f(int m, int n) {
if (m < 0 || n < 0) {
return 0;
}
if (m == 0 && n == 0) {
return 1;
}
return f(m - 1, n) + f(m, n - 1);
}public class Solution {
static int count = 0;
static int[][] cached = new int[100][100];
public static void main(String[] args) {
System.out.println(f(3, 2));
}
private static int f(int m, int n) {
count++;
if (m < 0 || n < 0) {
return 0;
}
if (m == 0 && n == 0) {
return 1;
}
if (cached[m][n] != 0) {
return cached[m][n];
}
cached[m][n] = f(m - 1, n) + f(m, n - 1);
return f[m][n];
}
}动态规划
DFS
回溯练习题
最后更新于