動態(tài)規(guī)劃總結(jié)篇

  1. 808 Soup Servings
  2. 837 新21點(diǎn)
  3. 464 can i win
  4. 最大平均值和
  1. 808 Soup Servings
    想到的方式是通過回溯暴力解,但是很明顯不合理。
    dp公式:f(a, b) = 0.25 * (f(a - 4, b) + f(a - 3, b - 1) + f(a - 1, b - 3) + f(a - 2, b - 2)
    double memo[200][200];
    double soupServings(int N) {
        return N >= 4800 ?  1.0 : f((N + 24) / 25, (N + 24) / 25);
    }
    double f(int a, int b) {
        if (a <= 0 && b <= 0) return 0.5;
        if (a <= 0) return 1;
        if (b <= 0) return 0;
        if (memo[a][b] > 0) return memo[a][b];
        memo[a][b] = 0.25 * (f(a-4,b)+f(a-3,b-1)+f(a-2,b-2)+f(a-1,b-3));
        return memo[a][b];
    }
  1. 837 新21點(diǎn)
    想到的方法還是回溯遞歸,可以得到正確答案,但是時間復(fù)雜度會超。
    dp公式:f(n)=f(n-1)/w + f(n-2)/w + ... + f(n-w)/w
#psuedocode
dp[k] = 1.0 when K <= k <= N, else 0.0
# dp[x] = the answer when Alice has x points
for k from K-1 to 0:
    dp[k] = (dp[k+1] + ... + dp[k+W]) / W
return dp[0]
  1. 464 can i win
    由于是無放回的抽取,所以不能使用動態(tài)規(guī)劃。解法只能是帶緩存的遞歸。

  2. 813 最大平均值和的分組
    狀態(tài)轉(zhuǎn)移方程:dp[i][k] = max(dp[i][k], dp[j][k - 1] + 1.0 * (sum[i] - sum[j]) / (i - j))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,081評論 0 2
  • One 1 the [e?, ei:] art.這,那 ad.[用于比較級;最高級前] 2 be [bi:,bi]...
    梁培林閱讀 9,628評論 0 10
  • 回溯算法 回溯法:也稱為試探法,它并不考慮問題規(guī)模的大小,而是從問題的最明顯的最小規(guī)模開始逐步求解出可能的答案,并...
    fredal閱讀 14,027評論 0 89
  • 選擇題部分 1.(),只有在發(fā)生短路事故時或者在負(fù)荷電流較大時,變流器中才會有足夠的二次電流作為繼電保護(hù)跳閘之用。...
    skystarwuwei閱讀 14,418評論 0 7
  • 離家數(shù)年,每每想起故鄉(xiāng),想起家,最多的便是吃。我老家在豫南,論吃我認(rèn)為超出河南絕大多數(shù)地市。 背過的詩忘了,走過的...
    伊石榴閱讀 457評論 5 2

友情鏈接更多精彩內(nèi)容