Guess Number Higher or Lower II
2017-07-28 21:12
232 查看
一、题目
英文:Guess Number Higher or Lower II中文:猜数字大小
二、内容要求
英文:We are playing the Guess Game. The game is as follows:I pick a number from 1 to n. You have to guess which number I picked.
Every time you guess wrong, I'll tell you whether the number I picked is higher or lower.
However, when you guess a particular number x, and you guess wrong, you pay $x. You win the game when you guess the number I picked.
中文:我们在玩猜谜游戏。游戏如下:
我从1到n选择一个数字,你得猜我选了哪个号码。
每次你猜错了,我都会告诉你我选的号码是高还是低。
然而,当你猜一个特定的数字X,你猜错了,你付出$ x你赢了游戏,当你猜我选的号码。
三、示例
n = 10, I pick 8. First round: You guess 5, I tell you that it's higher. You pay $5. Second round: You guess 7, I tell you that it's higher. You pay $7. Third round: You guess 9, I tell you that it's lower. You pay $9. Game over. 8 is the number I picked. You end up paying $5 + $7 + $9 = $21.
四、解析
For each number x in range[i~j]we do: result_when_pick_x = x + max{DP([i~x-1]),
DP([x+1, j])}
--> // the max means whenever you choose a number, the feedback is always
bad and therefore leads you to a worse branch.
then we get DP([i~j]) = min{xi,
... ,xj}
--> // this min makes sure that you are minimizing your cost.
可知,其动态规划方程:matrix[s][e]=m+Math.max(matrix[s][m-1],matrix[m+1][e]) 注意控制边界条件。
五、代码
java代码public int getMoneyAmount(int n) { int[][] table = new int[n+1][n+1];//创建一个二维数组 return DP(table, 1, n);//调用函数并直接返回结果,传参有三个 } int DP(int[][] t, int s, int e){ if(s >= e) return 0;//不满足条件的索引区间 if(t[s][e] != 0) return t[s][e]; int res = Integer.MAX_VALUE; for(int x=s; x<=e; x++){ int tmp = x + Math.max(DP(t, s, x-1), DP(t, x+1, e));//动态规划方程 res = Math.min(res, tmp);//取其中最小的 } t[s][e] = res; return res; }
相关文章推荐
- 375. Guess Number Higher or Lower II
- [TODO] LeetCode #375: Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II
- LeetCode 375. Guess Number Higher or Lower II
- [leetcode-375]Guess Number Higher or Lower II(java)
- 375. Guess Number Higher or Lower II
- 【LEETCODE】375- Guess Number Higher or Lower II [Python]
- 375. Guess Number Higher or Lower II
- Guess Number Higher or Lower II -- LeetCode
- 375. Guess Number Higher or Lower II
- leetcode 375. Guess Number Higher or Lower II
- [leetcode] 375. Guess Number Higher or Lower II 解题报告
- LeetCode 375. Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II
- 374,375. Guess Number Higher or Lower I,II
- leetcode_375. Guess Number Higher or Lower II ? 待解决
- [LeetCode] 375. Guess Number Higher or Lower II 猜数字大小 II
- leetcode:Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II