日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【LeetCode笔记】剑指 Offer 60. n个骰子的点数(Java、动态规划)

發布時間:2024/7/23 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode笔记】剑指 Offer 60. n个骰子的点数(Java、动态规划) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 題目描述
  • 代碼 & 思路
      • 1. 二維數組(方便理解)
      • 2. 一維數組(節約空間)
      • 二刷

鴿了好久的打題博客~要繼續補起來了!
今天不打題,明天變垃圾 QAQ

題目描述

  • 一眼就想先暴力枚舉、或者遞歸呀~但是貌似會超時,這里就直接用dp了
  • 參考題解
  • 主要思路有點像跳臺階,也就是用上一輪次的和,來維護當前輪次的值

代碼 & 思路

1. 二維數組(方便理解)

  • 舉個例子吧:兩個骰子得出來的值8,相當于:
  • 一個骰子的2,再補上另一個的6
  • 一個骰子的3,再補上另一個的5
  • 一個骰子的4,再補上另一個的4
  • 一個骰子的5,再補上另一個的3
  • 一個骰子的6,再補上另一個的2
  • 當然,一個骰子的1,再補上另一個的7 這種情況是不存在的,所以只有5種情況可行。
    也就是說 dp[2][8] = dp[1][2] + dp[1][3] + dp[1][4] + dp[1][5]+ dp[1][6]
  • 按照這么一個思路,我們就可以得出下面的代碼:
class Solution {public double[] dicesProbability(int n) {// 第一行、最后一列舍棄,方便下標理解// dp[骰子數][可投出點數] = 對應次數double[][] dp = new double[n + 1][6 * n + 1];// 初始化for(int i = 1; i <= 6; i++) {dp[1][i] = 1;}// dp 過程for(int i = 2; i <= n; i++) {// 范圍[i, 6 * i]for(int j = i; j <= 6 * i; j++) {// 取上一層的前6個for(int k = 1; k <= 6; k++) {// 取不到6個則有多少取多少if(j - k <= 0) {break;}// 狀態轉移方程 dp[i][j] += dp[i - 1][j - k];}}}// 結束,取答案double all = Math.pow(6, n);double[] ans = new double[5 * n + 1];for(int i = 0; i < ans.length; i++) {ans[i] = dp[n][i + n] / all;}return ans;} }

2. 一維數組(節約空間)

  • 在上一個方法的基礎上,我們知道:第 n 輪的值,只和第 n - 1 輪的值相關
  • (還是得去上面鏈接的題解結合動圖理解
  • 經過思考,可以發現其實按照從后往前的順序進行數組更新,就只需要一維數組即可:
  • 舉個例子(實際還是1維,這里的行值是輔助了解當前狀態):
  • dp[2][12] = dp[1][11] + dp[1][10] + … + dp[1][6]
  • dp[2][11] = dp[1][10] + dp[1][9] + … + dp[1][5]
  • dp[2][2] = dp[1][1]
  • 這也就是需要從后往前的原因,如果從前往后的話,dp[2][12]就取不到dp[1][11]的值了。從后往前可以實現無后效性~
  • 那么進行一個空間上的優化,可以得到以下代碼:
class Solution {public double[] dicesProbability(int n) {// 0 下標不取,一共 6 * n 個格子double[] dp = new double[6 * n + 1];// 初始化,全為1for(int i = 1; i <= 6; i++) {dp[i] = 1;}// 2個、3個...n個骰子,以此類推for(int i = 2; i <= n; i++) {// 從后往前,可推n個骰子范圍[n, 6 * n]for(int j = 6 * i; j >= i; j--) {// 給新的格子賦值dp[j] = 0;// 獲取前六個格子的值(類似走樓梯)for(int k = 1; k <= 6; k++) {// 過于倒退的情況,結束(不一定都能取6個)if(j - k < i - 1) {break;}// 累加前面的格子值dp[j] += dp[j - k];}}}// 獲取答案double all = Math.pow(6, n);double[] ans = new double[5 * n + 1];for(int i = 0; i < ans.length; i++) {ans[i] = dp[n + i] / all;}return ans;} }

二刷

  • O(n2n^2n2)、O(n2n^2n2)
class Solution {public double[] dicesProbability(int n) {// 1. dp初始化int[][] ans = new int[n + 1][6 * n + 1];for(int i = 1; i <= 6; i++) {ans[1][i] = 1;}// 2. dp 過程 O(n^2)for(int i = 2; i <= n; i++) {for(int j = i; j <= i * 6; j++) {for(int k = 1; k <= 6 && j - k >= i - 1; k++) {ans[i][j] += ans[i - 1][j - k];}}}// 3. 獲取答案double[] myAns = new double[5 * n + 1];for(int i = 0; i < myAns.length; i++) {myAns[i] = ans[n][i + n] / Math.pow(6, n);;}return myAns;} }
  • O(n2n^2n2)、O(nnn)
class Solution {public double[] dicesProbability(int n) {// 1. dp初始化int[] ans = new int[6 * n + 1];for(int i = 1; i <= 6; i++) {ans[i] = 1;}// 2. dp 過程 O(n^2)for(int i = 2; i <= n; i++) {for(int j = 6 * i; j >= i; j--) {ans[j] = 0;for(int k = 1; k <= 6 && j - k >= i - 1; k++) {ans[j] += ans[j - k];}}}// 3. 獲取答案double[] myAns = new double[5 * n + 1];for(int i = 0; i < myAns.length; i++) {myAns[i] = ans[i + n] / Math.pow(6, n);;}return myAns;} }

總結

以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 60. n个骰子的点数(Java、动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 四虎影视免费观看 | 久久中出 | 激情婷婷久久 | 国产一级精品毛片 | 国产亚洲欧美一区二区三区 | 国产精品视频久久久久久 | 亚洲精品永久免费 | 精品成人免费一区二区在线播放 | 成人三级黄色片 | 亚洲性生活片 | 国产精品免费一区二区 | 国产精品国产自产拍高清av | 国产女女调教女同 | 最新中文字幕av专区 | 波多野结衣一区二区三区高清av | 91人妻一区二区三区蜜臀 | 自拍偷拍999 | 青青视频网 | 成人久久久精品乱码一区二区三区 | 七仙女欲春2一级裸体片 | 动漫美女被吸乳奶动漫视频 | 一区二区精品国产 | 精品欧美一区二区精品久久 | 天天干,天天操,天天射 | 狠狠操一区二区 | 日韩福利在线播放 | 久久国产福利 | 国产在线高清 | 肉大榛一进一出免费视频 | 能免费看18视频网站 | 四虎成人精品在永久免费 | 日本电影成人 | 国内精品亚洲 | 免费在线观看成年人视频 | 亚洲男人天堂久久 | 久草新视频 | av网站在线免费播放 | 国产真实偷伦视频 | 国产麻豆剧传媒精品国产 | 麻豆免费观看网站 | 国产一区二区激情 | 性——交——性——乱免费的 | 激情综合五月天 | 91丝袜美女 | 美女视频91 | 国产亚洲精品熟女国产成人 | 亚洲伦理天堂 | 成人午夜精品 | 我要色综合天天 | 免费黄色高清视频 | 日b免费视频 | 日本久久久久久久久久久 | 人人澡澡人人 | 涩涩网址| 色综合中文字幕 | 国产精品一区二区欧美 | 天堂av8在线 | 成av人片一区二区三区久久 | 免费黄色三级网站 | 一区二区三区四区精品视频 | 亚洲情se| 国模少妇一区二区 | 不卡国产视频 | 天天射夜夜撸 | 久草在现 | 三女警花合力承欢猎艳都市h | 欧美大片视频在线观看 | 肥熟女一区二区三肥熟女 | 99插插插 | 日本三级精品 | 欧美激情va永久在线播放 | 亚洲精品高潮久久久久久久 | 国产在线不卡 | 美女露胸露尿口 | 国产欧美又粗又猛又爽 | 国产成人无码av在线播放dvd | 在线观看av资源 | 亚洲成人网在线 | 一本一道无码中文字幕精品热 | 啪啪天堂 | 成人小说亚洲一区二区三区 | 天天干天天操心 | 无套内谢大学处破女www小说 | 成人性生交大片免费看中文 | 日本在线视频中文字幕 | www.黄色网| 黄色视屏在线看 | 一卡二卡三卡在线 | 日韩有码在线视频 | 色女生影院 | 一级片免费在线观看 | 影音先锋在线看 | 在线高清av | 色婷婷国产 | 欧美大片xxxx | 亚洲一区二区三区午夜 | 亚洲色成人网站www永久四虎 | 精品电影在线观看 | 亚洲欧美激情在线观看 |