成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

leetcode375. Guess Number Higher or Lower II

focusj / 558人閱讀

摘要:猜對(duì)則本次猜測(cè)免費(fèi),猜錯(cuò)則本次猜測(cè)需要花費(fèi)和數(shù)字等額的金錢。其實(shí)這題的英文表述有些問題,確切來說,在所有能夠確保找到目標(biāo)值的方法中,找到花費(fèi)金錢最少的哪種。當(dāng)?shù)扔跁r(shí),即從中找到目標(biāo)數(shù)字,確保找到一個(gè)數(shù)字至少需要多少錢。

題目要求
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 + $7 + $9 = $21.
Given a particular n ≥ 1, find out how much money you need to have to guarantee a win.

一個(gè)猜數(shù)字游戲,數(shù)字區(qū)間為1~n,每猜一次,會(huì)有人告訴你猜中了或者當(dāng)前的數(shù)字是大于結(jié)果值還是小于結(jié)果值。猜對(duì)則本次猜測(cè)免費(fèi),猜錯(cuò)則本次猜測(cè)需要花費(fèi)和數(shù)字等額的金錢。
問如果要確保能夠猜中數(shù)字,最少要花費(fèi)多少錢。

其實(shí)這題的英文表述有些問題,確切來說,在所有能夠確保找到目標(biāo)值的方法中,找到花費(fèi)金錢最少的哪種。

思路

我們先用一個(gè)比較簡(jiǎn)單的數(shù)字來找規(guī)律。當(dāng)n等于3時(shí),即從1,2,3中找到目標(biāo)數(shù)字,確保找到一個(gè)數(shù)字至少需要多少錢。
查詢序列如下:

目標(biāo)值3:1,2 2

目標(biāo)值2:1,3

目標(biāo)值1:3,2,2

可見如果要找到1,2,3中任意一個(gè)數(shù)字,最少要花費(fèi)2元錢,即從2開始查詢,如果命中,則花費(fèi)0元,如果沒有命中也知道目標(biāo)值比2小還是比2大,下次猜測(cè)一定命中,因此該序列中找到任何一個(gè)數(shù)字最多花費(fèi)2元錢。

如此可見,假如要知道m(xù)in(1,n)的值,只要找到花費(fèi)最小的中間點(diǎn)k,即遞歸的公式相當(dāng)于min(1,n) = k + Math.max(min(1, k-1), min(k+1,n)) 1<=k<=n找到最小的min即可。

思路一:自頂向下的動(dòng)態(tài)規(guī)劃
    public int getMoneyAmount(int n) {
        int[][] tmp = new int[n+1][n+1];
        for(int[] row: tmp){
            Arrays.fill(row, Integer.MAX_VALUE);
        }
        return getMoneyAmount(n, 1, n, tmp);
    }
    
    public int getMoneyAmount(int n, int lft, int rgt, int[][] tmp) {
        if(lft>=rgt) return 0;
        if(tmp[lft][rgt] != Integer.MAX_VALUE) return tmp[lft][rgt];
        for(int i = lft ; i<=rgt ; i++) {
            tmp[lft][rgt] = Math.min(tmp[lft][rgt], Math.max(i + getMoneyAmount(n, lft, i-1, tmp), i + getMoneyAmount(n, i+1, rgt, tmp)));
        }
        return tmp[lft][rgt];
    }
思路二:自底向上的動(dòng)態(tài)規(guī)劃
    public int getMoneyAmount(int n) {
        int[][] dp = new int[n+1][n+1];
        for(int i = 2 ; i<=n ; i++) {
            for(int j = i-1 ; j>0 ; j--) {
                int min = Integer.MAX_VALUE;
                for(int k = j+1 ; k           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77455.html

相關(guān)文章

  • 375. Guess Number Higher or Lower II

    摘要:題目鏈接又是一道的題,關(guān)鍵是找。表示最少的,當(dāng)范圍是的時(shí)候。所以要求就應(yīng)該遍歷切分點(diǎn)找出最小的值,這個(gè)切分點(diǎn)可能把問題分成左邊或者右邊,要取最大值才能保證所有的值都能贏。 375. Guess Number Higher or Lower II 題目鏈接:https://leetcode.com/problems... 又是一道dp的題,關(guān)鍵是找subproblem。dp[i][j]表...

    cloud 評(píng)論0 收藏0
  • Leetcode 相似題只有題號(hào)不含代碼。

    找出string里的單詞。 186. Reverse Words in a String II, 434. Number of Segments in a String combination類型題 77. Combinations 39. Combination Sum 40. Combination Sum II 216. Combination Sum III 494. Target S...

    StonePanda 評(píng)論0 收藏0
  • 前端 | 每天一個(gè) LeetCode

    摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...

    張漢慶 評(píng)論0 收藏0
  • leetcode299. Bulls and Cows

    摘要:題目要求游戲簡(jiǎn)單來說就是你隨手寫下一個(gè)位數(shù),并讓你同學(xué)猜這個(gè)數(shù)字是什么。第二次再在此基礎(chǔ)上計(jì)算重合的值和沒有重合的值的個(gè)數(shù)。這樣的話,如果下一次遇到重復(fù)但是位置不同的值,我們可以知道它是否已經(jīng)在中或是中出現(xiàn)過。 題目要求 You are playing the following Bulls and Cows game with your friend: You write down ...

    Kross 評(píng)論0 收藏0
  • [LeetCode] 299. Bulls and Cows

    Problem You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide a ...

    stefan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<