以前想過一個類似問題,就是沒有每個人最大、最小的得錢數的限制,以前的問題可以很好用隨機數解決。于是這個問題也被以前的思想帶坑里了,把突破口完全放在了如何處理每個人的隨機數上。于是在面試時間就沒有解決這個問題,直到面試結束自己安靜下來,仔細想想,發現思路錯了。我認為正確的思路是:每個人先得6塊錢,這樣剩下40塊錢,之后每次拿出一塊錢,隨機分配給一個人,如果某個人的錢數達到了上限,那么這個人下次就沒有了再得到錢的資格了。這樣直到剩下錢都分配完。當然在接口的實際處理上可以做些優化,例如剩下的錢每次隨機分配的錢可以是隨機的(當然這個隨機要做一些限制,以免一下就分配超額了),然后如果某個人錢+這次隨機分配的錢>每個人的上限,那么他就沒有資格得到這個錢了。隨機分配也好實現,先算有幾個人有資格得到這筆錢,隨即一個數,決定給第幾個符合資格的人。我的思路就是這樣,大家如果有更好的思路,請告知。謝謝。
面試問題:發一個隨機紅包,100塊錢給10個人。每個人最多12塊錢,最少6塊錢。怎么分?
長風秋雁
2018-06-29 15:15:08