亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大數據中如何解析n個骰子的點數

發布時間:2021-12-09 16:42:24 來源:億速云 閱讀:148 作者:柒染 欄目:大數據

大數據中如何解析n個骰子的點數,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,打印出s的所有可能的值出現的概率。

你需要用一個浮點數數組返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。

示例 1:

輸入: 1

輸出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]

示例 2:

輸入: 2

輸出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]

限制:

1 <= n <= 11

解題思路

1,這是一個動態規劃題目

2,假設有i個骰子,可以拼出的點數為i,i+1,i+2,......,i*6,共2*i-i+1個

3,i取值范圍是1...n

4,  用dp[i][j],表示,i個骰子,點數和為j的組合個數

5,狀態轉移方程為

        dp[i][j]=sum(dp[i-1][j-k]) k=1,2,3,4,5,6

6,由于用到了i-1,所以遞增

7,結果取,i=n那一列,j變化范圍從 i到2*i的數據,除以 pow(6,n)

代碼實現

func twoSum(n int) []float64 {    var r []float64    dp:=make([][]int,n+1)    for i:=0;i<n+1;i++{        dp[i]=make([]int,n*6+1)    }
   s:=pow(6,n)
   //1  1...6    //2  2...12    for i:=1;i<=6;i++{        dp[1][i]=1    }
   for i:=2;i<=n;i++{        for j:=i;j<=i*6;j++{            for k:=1;k<=6;k++{                if j>k{                                      dp[i][j]+=dp[i-1][j-k]                     fmt.Println( dp[i][j],":",i,j,"=>",i-1,j-k)                }            }            if j==i*6{            //    dp[i][j]=1            }                    }    }    for  j:=n;j<=n*6;j++{        r=append(r,float64(dp[n][j])/float64(s))    }     fmt.Println(dp[n][n:n*6+1])    fmt.Println(dp,s)    return r
}

func pow(x,y int)int{    r:=1    for i:=0;i<y;i++{       r*=x    }    return r}

/**解題思路dp[i][j]表示當n=i時,和為j出現的排列情況總數;狀態轉移方程:dp[i][j]=dp[i-1][j-1]+dp[i-1][j-2]+dp[i-1][j-3]+dp[i-1][j-4]+dp[i-1][j-5]+dp[i-1][j-6];初始條件:dp[1][1]=dp[1][2]=dp[1][3]=dp[1][4]=dp[1][5]=dp[1][6]=1;
代碼class Solution {public:    vector<double> twoSum(int n) {        vector<vector<int>>dp(n+1,vector<int>(6*n+1,0));        double num=pow(6,n);        vector<double>res(5*n+1,1/(double)6);        //初始狀態        for(int i=1;i<=6;i++)dp[1][i]=1;        for(int i=2;i<=n;i++){      //從2到n計算dp            for(int j=i;j<=i*6;j++){  //表示當n=i時候的點數和取值從i到6i                for(int k=1;k<=6;k++){  //dp[i][j]=dp[i-1][j-1]+dp[i-1][j-2]+dp[i-1][j-3]+dp[i-1][j-4]+dp[i-1][j-5]+dp[i-1][j-6];                    if(j-k>0)dp[i][j]+=dp[i-1][j-k]; //第i個骰子點數一定比i-1個骰子點數大                    if(i==n)res[j-i]=dp[i][j]/num;              }            }        }                return res;    }};*/

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

礼泉县| 寿光市| 托里县| 纳雍县| 昌图县| 卓尼县| 浪卡子县| 海口市| 永修县| 双鸭山市| 巩留县| 大渡口区| 内江市| 昌平区| 竹溪县| 饶阳县| 汤阴县| 洛扎县| 军事| 遵化市| 哈尔滨市| 昭平县| 湘潭市| 瑞丽市| 雅江县| 巫溪县| 陆川县| 乳山市| 玉环县| 额敏县| 崇左市| 德惠市| 唐山市| 赤壁市| 闽清县| 镇坪县| 太康县| 香河县| 炉霍县| 武清区| 玉林市|