题目参考自 http://blog.codingnow.com/2012/12/share_rent.html
两个人合租一套两卧室的房,总价1500元,问用什么方法分配选房和房租,才能让两个人都满意?
最常用的一种方案是先分后选法。即让一个人先分,让另一个人先选。
另外的一种常用方法是拍卖法。即从某一个房间开始拍卖出价,出价最高者得。
有人还研究出了一种更妙的方法,我叫他拍卖均价法。即每个人都出一个价格分配方案(保证每间房的价格之和等于总价),然后每一间房有出价最高的人得,实际所出价格为所有人出价之均价。
例如甲的分配方案为大房间1000, 小房间500元,
乙的分配方案为大房间900, 小房间600元。
则最终的分配方案为大房间950归甲,小房间550元归乙住。
这种方法的精妙之处在于,每个人的实际入住价格都比他自己分配(当然也意味着他认为合理)的价格低。
------------------------
如果租房问题扩展到N个人合租N个房的情况呢?
用先分后选法没有简洁的扩展方案。
用拍卖法则无需任何修改。
用拍卖均价法也可以比较容易的扩展。
方法如下,
1,每个候选人对所有候选房间都出一个价格,价格总和要等于总价,然后以某种顺序从某一个房开始,
2,如果所有人对这个房间出的价格中,最高价唯一,则最高出价者以这个房间的前两高价均价得到这个房间,候选人减去此人,候选房间减去此房,总价减去相应价格,然后转(1),如果最高价不唯一,则继续。
3,顺序下移,如果移到终点,说明这一轮所有人的所有方案相同,可以按预先约定的顺序重新开始或者随机分配;如果没有移到终点则转(2)。
举例如下,如甲、乙、丙三个合租大、中、小三个房间共3200元,方案分别是
甲 大1500,中1000,小700,
乙 大1500,中1030,小670,
丙 大1400,中1000,小800,
按预先约定的顺序比如按房间从大到小开始,
由于大房间的最高价不唯一,则顺序下移到中房间,
中房间乙的出价1030最高,则乙以中房间的前两高均价(1000+1030)/2=1015的价格租得,
之后则甲和乙对大房间和小房间以总价2185再次重新用此方法开始分配。