编程题——年会抽奖
鏈接:https://www.nowcoder.com/questionTerminal/610e6c0387a0401fb96675f58cda8559
來源:??途W
今年公司年會的獎品特別給力,但獲獎的規矩卻很奇葩:
現在告訴你參加晚會的人數,請你計算有多少概率會出現無人獲獎?
輸入描述:
輸入包含多組數據,每組數據包含一個正整數n(2≤n≤20)。
輸出描述:
對應每一組數據,以“xx.xx%”的格式輸出發生無人獲獎的概率。
示例1
輸入
2
輸出
50.00%
**解題思路:**典型的排錯問題
n個人取到的都不是自己名字的概率=n個人取到的不是自己名字的序列個數 / n個人可能抽取的所有可能性
因此分兩步計算:
1.n個人可能抽取的所有結果:n!
2.n個人取到的都不是自己名字的序列個數:f(n)
假設第一個人取到的不是自己的個數為n-1,
假設第二個人這個時候拿到了第一個人的名字,那么對于第二個人的名字有兩種情況:
第一種:第二個人的名字是被第一個人拿到了,也就是a和b互相拿到了對方的名字,那么對于其他的N-1個人來說互相拿錯又是一個子問題f(n-2) ;
第二種:第二個人的名字沒有被第一個人拿到,則剩下的問題是子問題f(n-1).
f(n) = (n-1)*[f(n-2) + f(n-1)]
總結
- 上一篇: 20K+ SRE面试题分享
- 下一篇: 计算机的软件和硬盘分区,DM9.57经典