題目:
把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。
示例:
輸入:
n =2
輸出:
解法:
/**
* 動態規劃規律:f(n)=f(n-1)+f(n-2)+f(n-3)+f(n-4)+f(n-5)+f(n-6)
* 向已有的骰子中再加入乙個骰子,此時和為n出現的次數應為和為n-1,
* n-2,n-3,n-4,n-5,n-6的次數之和
* @param n
* @return
*/public
static map
dicessum
(int n)
boolean flag =
false
;//flag用於標識兩個陣列的交換
if(n >1)
flag =
true;}
else
flag =
false;}
}}if(
!flag)
}else
}return resmap;
}/**
* 計算次數所佔比例
* @param i 對應情況發生次數
* @param n 可能發生情況綜述
* @return
*/private
static double ratio
(int i,
int n)
/** * 計算當前點數發生的次數
* @param k
* @param res
* @return
*/private
static
intf
(int k,
int[
] res)
}return temp;
}
劍指 面試題60 n個骰子的點數
題目 把n個骰子扔在地上,所有骰子朝上一面的點數之和為s。輸入n,列印出s的所有可能的值出現的概率。你需要用乙個浮點數陣列返回答案,其中第 i 個元素代表這 n 個骰子所能擲出的點數集合中第 i 小的那個的概率。思路 動態規劃 參考leetcode題解 c class solution int su...
劍指offer n個骰子的點數
思路 這裡可以用兩個陣列來儲存骰子點數的每個總數出現的次數。在一輪迴圈中,第乙個陣列中的第n個數字表示骰子的和為n出現的次數。在下一輪的迴圈中,加上乙個新的骰子,此時和為n的骰子出現的次數應該等於上一輪迴圈中骰子點數和為n 1,n 2,n 3,n 4,n 4,n 5與n 6次數的總和,所以把另外乙個...
劍指offer面試題7
面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...