您的位置:首页 > 产品设计 > UI/UE

LeetCode—375. Guess Number Higher or Lower II

2016-07-18 17:09 483 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: