LeetCode—375. Guess Number Higher or Lower II

Guess Number Higher or Lower II思路:刚开始的时候想到的不是动态规划,而是在(s,e)的范围内求出m,使得(s,m-1)=(m+1,e),结果发现两个问题,一个是不能使得两边相等时m靠左还是右,第二个问题更严重,因为题目中表示最后猜对的那一次是不要成本的。。。后来参考下,还是用dp来做。

动态规划方程:matrix[s][e]=m+Math.max(matrix[s][m-1],matrix[m+1][e]) 注意控制边界条件。

GitHub地址:https://github.com/corpsepiges/leetcode

点此进入如果可以的话,请点一下star,谢谢。


public class Solution {
    public int getMoneyAmount(int n) {
        int[][] matrix=new int[n+1][n+1];
        return pay(matrix,1,n);
    }
    public int pay(int[][] matrix,int s,int e){
        if(s>=e){
            return 0;
        }
        if(matrix[s][e]!=0){
            return matrix[s][e];
        }
        int ans=Integer.MAX_VALUE;
        for(int m=s;m<=e;m++){
            int test=m+Math.max(pay(matrix,s,m-1),pay(matrix,m+1,e));
            if(test


你可能感兴趣的:(leetcode)