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