暴力求解,n個骰子和為s就等於n-1個骰子和分別為s-1~s-6時次數的總和。據此寫出**如下:
int baoli(int n, int s)
int count = 0;
count = baoli(n - 1, s - 1) + baoli(n - 1, s - 2) + baoli(n - 1, s - 3) +
baoli(n - 1, s - 4) + baoli(n - 1, s - 5) + baoli(n - 1, s - 6);
return count;
}
動態規劃,空間複雜度為o(ns),時間複雜度為o(ns);
int times(int n, int s)
return f[n][s];
}
動態規劃,優化空間複雜度,只使用兩個長度為s+1的陣列,空間複雜度為o(s);
int times(int n, int s)
return f[n][s];
}
劍指offer 43 n個骰子的點數
n個骰子的點數 把n個骰子扔在地上,點數之和為s,輸入個數n,列印出所有可能的值出現的概率 解法1 兩個矩陣迭代相加,乙個點數等於之前6個點數相加 public class main public static void printpro int n int matrix new int 2 6 n...
劍指offer43 n個骰子的點數
類似青蛙跳台階的問題 第n個骰子點數為1的話,f n,s f n 1,s 1 當第n個骰子點數為2的話,f n,s f n 1,s 2 依次類推。在n 1個骰子的基礎上,再增加乙個骰子出現點數和為s的結果只有這6種情況!f n,s f n 1,s 1 這個等式只是在 第n個點數為1的時候,所有考慮的...
劍指 Offer 60 n個骰子的點數
把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。示例 1 輸入 1 輸出 0.16667,0.16667,0.16667,0.16667,0....