一道收集優惠券的面試題

2021-06-07 22:45:12 字數 557 閱讀 3304

問題:

乙個飯店發行一套優惠券,一套裡面總共有 n 張不同的優惠券,顧客每次吃一次,可以隨機獲得一張優惠券。如果收集齊一套,下次吃飯可以打折。請問:顧客要來多少次才能收集齊一套優惠券?(是不是和小時候吃零食收集刮刮卡的情形是一樣的,呵呵)

分析:

問題的難點在於顧客獲得的優惠劵可能會有重複。但是,我們可以換一角度思考。

假設顧客第一次來,他一定會得到一張獨一無二的優惠券,第二次來的時候,得到的優惠券和上次不重複的概率是 (n-1) / n, 第三次來的時候,得到與上兩次不同的概率是 (n - 2) / n,.... ,到第 n 次來的時候,與前 n - 1 次收集到的優惠券不同的概率是 1 / n。 

換句話說,拿到第一張不重複的優惠券需要的次數是 1, 拿到第二張與前一張不同的優惠券需要的次數是 n / (n - 1), 拿到第三張與前兩張不同的優惠劵需要的次數是 n /(n - 2), 以此類推,拿到最後一張不重複的優惠券所需要的次數是 n / 1.

所以,總的次數是 1 + n / (n-1) + n /(n-2) + n / (n -3) + ... + n ~= n lg n.

一道收集優惠券的面試題

問題 乙個飯店發行一套優惠券,一套裡面總共有 n 張不同的優惠券,顧客每次吃一次,可以隨機獲得一張優惠券。如果收集齊一套,下次吃飯可以打折。請問 顧客要來多少次才能收集齊一套優惠券?是不是和小時候吃零食收集刮刮卡的情形是一樣的,呵呵 分析 問題的難點在於顧客獲得的優惠劵可能會有重複。但是,我們可以換...

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...