Guess Number Higher or Lower II
2016-09-25 10:58
351 查看
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.
Example:
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+9+7=21
Given a particular n ≥ 1, find out how much money you need to have to guarantee a win.
解:
minmax
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.
Example:
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+9+7=21
Given a particular n ≥ 1, find out how much money you need to have to guarantee a win.
解:
minmax
typedef vector<vector<int>> matrix_int; class Solution { public: int solve(int i,int j,matrix_int &dp) { if(i==j) { dp[i][j]=0; return 0; } else { if(dp[i][j]>0)return dp[i][j]; else { int mm=solve(i+1,j,dp)+i; mm=min(mm,solve(i,j-1,dp)+j); for(int k=i+1;k<j;++k) { int a=solve(i,k-1,dp); int b=solve(k+1,j,dp); mm=min(mm,max(a,b)+k); } dp[i][j]=mm; return mm; } } } int getMoneyAmount(int n) { matrix_int dp(n+1,vector<int>(n+1,-1)); return solve(1,n,dp); } };
相关文章推荐
- [LeetCode] 375. Guess Number Higher or Lower II 猜数字大小 II
- 375. Guess Number Higher or Lower II
- Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II
- [leetcode] 375. Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II
- [LeetCode]374. Guess Number Higher or Lower【&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]
- [TODO] LeetCode #375: Guess Number Higher or Lower II
- 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 解题报告
- LeetCode 375. Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II