美文网首页
Guess Number Higher or Lower II

Guess Number Higher or Lower II

作者: BLUE_fdf9 | 来源:发表于2018-09-11 21:35 被阅读0次

    题目

    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 pay7.
    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.
    Given a particular n ≥ 1, find out how much money you need to have to guarantee a win.

    分析
    这个题目,理解题目问什么比较tricky。。

    大意如下
    给你n个数字(1 2 3 4 .... n)

    answer = min_maxcost = No matter what the target is, the min_maxcost can cover the cost of guessing it from the n numbers.

    but you would ask, then why not just return sum of (1...n)?

    well, we are looking for the minimum one, and so min_maxcost is the lower bound for all such cost

    答案

        public int getMoneyAmount(int n) {
            int[][] dp = new int[n + 1][n + 1];
            for(int i = 0; i < dp.length; i++)
                Arrays.fill(dp[i], -1);
    
            return recur(dp, 1, n);
        }
    
        public int recur(int[][] dp, int left, int right) {
            if(left >= right) return 0;
            if(dp[left][right] !=  -1) return dp[left][right];
            // No cost for guessing a number in range of size 1, it has to be correct
    
    
            int min = Integer.MAX_VALUE;
            for(int i = left; i <= right; i++) {
                min = Math.min(min, i + Math.max(recur(dp, left, i - 1), recur(dp, i + 1, right)));
            }
            dp[left][right] = min;
            return dp[left][right];
        }
    

    相关文章

      网友评论

          本文标题:Guess Number Higher or Lower II

          本文链接:https://www.haomeiwen.com/subject/nyfugftx.html