這裡有 d 個一樣的骰子,每個骰子上都有 f 個面,分別標號為 1, 2, ..., f。
我們約定:擲骰子的得到總點數為各骰子面朝上的數字的總和。
如果需要擲出的總點數為 target,請你計算出有多少種不同的組合情況(所有的組合情況總共有 f^d 種),模 10^9 + 7 後返回。
示例 1:
輸入:d = 1, f = 6, target = 3
輸出:1
示例 2:
輸入:d = 2, f = 6, target = 7
輸出:6
這是典型的動態規劃問題,需要儲存的二維陣列元素值為當前骰子數和可能投擲出的總點數,即dp[d][target]。而骰子的問題分為:
(1)骰子個數——第一層迴圈
(2)總點數——第二層迴圈
(3)最後只剩乙個骰子投出的那一面點數——第三層迴圈
public int numrollstotarget(int d, int f, int target)
/*骰子數*/
時間複雜度o(d*target*f),額外空間複雜度o(d*target)
1155 擲骰子的N種方法
暑假刷題水題居多,多數都沒有什麼記錄的價值,不過還是有題目是有必要寫下來供自己以後複習的。先上一題前幾天寫的題目 1155.擲骰子的n種方法 這裡有 d 個一樣的骰子,每個骰子上都有 f 個面,分別標號為 1,2,f。我們約定 擲骰子的得到總點數為各骰子面朝上的數字的總和。如果需要擲出的總點數為 t...
1155 擲骰子的N種方法
這裡有 d 個一樣的骰子,每個骰子上都有 f 個面,分別標號為 1,2,f。我們約定 擲骰子的得到總點數為各骰子面朝上的數字的總和。如果需要擲出的總點數為 target,請你計算出有多少種不同的組合情況 所有的組合情況總共有 f d 種 模 10 9 7 後返回。示例 1 輸入 d 1,f 6,ta...
leetcode 1155 擲骰子的N種方法
這裡有 d dd 個一樣的骰子,每個骰子上都有 f ff 個面,分別標號為 1,2 f 1,2,f 1,2,f。我們約定 擲骰子的得到總點數為各骰子面朝上的數字的總和。如果需要擲出的總點數為 tar ge ttarget target 請你計算出有多少種不同的組合情況 所有的組合情況總共有 f df...