日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

[Leedcode][JAVA][第837题][新21点][动态规划][数学]

發布時間:2023/12/10 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Leedcode][JAVA][第837题][新21点][动态规划][数学] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】[中等]

愛麗絲參與一個大致基于紙牌游戲 “21點” 規則的游戲,描述如下:愛麗絲以 0 分開始,并在她的得分少于 K 分時抽取數字。 抽取時,她從 [1, W] 的范圍中隨機獲得一個整數作為分數進行累計,其中 W 是整數。 每次抽取都是獨立的,其結果具有相同的概率。當愛麗絲獲得不少于 K 分時,她就停止抽取數字。 愛麗絲的分數不超過 N 的概率是多少?輸入:N = 6, K = 1, W = 10 輸出:0.60000 說明:愛麗絲得到一張卡,然后停止。 在 W = 10 的 6 種可能下,她的得分不超過 N = 6 分。輸入:N = 21, K = 17, W = 10 輸出:0.73278

【解答思路】

1. 動態規劃


時間復雜度:O(N+KW) 空間復雜度:O(K + W )

class Solution {public double new21Game(int N, int K, int W) {if (K == 0) {return 1.0;}double[] dp = new double[K + W + 1];for (int i = K; i <= N && i < K + W; i++) {dp[i] = 1.0;}for (int i = K - 1; i >= 0; i--) {for (int j = 1; j <= W; j++) {dp[i] += dp[i + j] / W;}}return dp[0];} }
2. 動態規劃優化


時間復雜度:O((min(N,K+W)) 空間復雜度:O(K+W)

public double new21Game(int N, int K, int W) {if( K == 0){return 1.0;}double[] dp = new double[K+W+1];//邊界考慮清晰 部分變1for( int i =K ;i<=N && i<K+W ;i++){dp[i]= 1.0;}//公式推導簡化dp[K-1] = 1.0*Math.min(N-K+1,W)/W;//差分公式 K-1額外計算for(int i = K-2 ; i>=0 ;i--){dp[i] = dp[i+1]- (dp[i+W+1] -dp[i+1])/W;}return dp[0];}

換語言表達

【總結】

1.本題采用由結果推向答案的(尾到頭)思想 ,應該屬于后驗概率
2.動態規劃


動態規劃流程
第 1 步:設計狀態
第 2 步:狀態轉移方程
第 3 步:考慮初始化
第 4 步:考慮輸出
第 5 步:考慮是否可以狀態壓縮

3. 動態規劃思考
  • 邊界問題考慮清楚(第二第三步)
  • 動態就是做表格 想清楚方向
  • 自底向上 子問題 學基礎 再解決問題 通識教育
  • 自頂向下 一般解決問題思路

轉載鏈接:https://leetcode-cn.com/problems/new-21-game/solution/xin-21dian-by-leetcode-solution/
參考鏈接:https://leetcode-cn.com/problems/new-21-game/solution/que-ren-zui-hou-yi-lun-qu-pai-zhuang-kuang-ji-ji-l/

總結

以上是生活随笔為你收集整理的[Leedcode][JAVA][第837题][新21点][动态规划][数学]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。