375. Guess Number Higher or Lower II
原理minMax,最小化最大损失
从第i天到j天中,如果猜x的损失为x + Math.max(DP[i][x-1], DP[x+1][j])
那么i~j天中最小的最大损失是Math.min(猜x的损失)
public int getMoneyAmount(int n) { int[][] res = new int[n][n]; DP(res, 0, n-1); return res[0][n-1]; } private int DP(int[][] res, int start, int end) { if(start >= end) { return 0; } if(res[start][end] != 0) { return res[start][end]; } int minMax = Integer.MAX_VALUE; for(int i = start; i <= end; i++) { int cur = i + 1 + Math.max(DP(res, start, i - 1), DP(res, i + 1, end)); minMax = Math.min(minMax, cur); } res[start][end] = minMax; return minMax; }