题目描述
参考代码
public class Main {
static int[][] map = new int[1000][1002];
public static void main(String[] args) {
System.out.println(dp(3, 1000));
}
private static int dp(int m, int n) {
int ans = 1000;
if (m == 1)
return n;
if (n == 0)
return 0;
if (map[m][n] >0)
return map[m][n];
for (int i = 1; i <= n; i++) {
ans = Math.min(Math.max(dp(m, n - i), dp(m - 1, i - 1)) + 1, ans);
map[m][n] = ans;
}
return ans;
}
}
答案:19