面試題60 劍指offer n個骰子的點數

2021-09-26 04:30:38 字數 1044 閱讀 4823

題目:

把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 ...