LeetCode—375. Guess Number Higher or Lower II

来源:互联网 发布:日本人残忍知乎 编辑:程序博客网 时间:2024/05/22 20:49

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<ans){                ans=test;            }        }        matrix[s][e]=ans;        return ans;    }}


0 0
原创粉丝点击