重庆万科御澜道怎么样:一个微软招程序员的题目

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/10 07:41:27
有5个兄弟到一荒岛上,他们见到100金币,但不知道如何去分,于是他们想出来一个办法就是,这样先老大提出建议但要半数以上的人通过才行,不通过讲被扔进大海中如果老大建议没通过的话,在由老2提出规则也是和老大的一样,请问老大要提出什么建议才能保证半数以上的人通过,而且老大要获得最高的利益<谁要是用编程写出来我给他加高分!!!!!!!!!!!!!!!!!!》

先把五个兄弟编号。老大为1号,老二为2号,老三为3号,老四为4号,老五为5号。
先说5号的情况,显然如果只剩下5号的话,他可以得到100枚金币,因此,前面4个人只要分给5号的金币小于100枚,他就会不投票。
再说4号,如果只剩下4号和5号,那么4号的分配只有:4号一枚不得,5号100枚。
再说3号,他要想通过就要拿到2票,因此需要贿赂一个兄弟,5号是不可能的,只有拿4号一票。如果3号未通过,轮到4号选择就是自己一枚也得不到,显然这是4号不想看到的,所以,只要3号分给自己的金币数大于0枚,他就会投3号一票。因此3号的分配方法是:自己99枚,4号1枚,5号0枚。
再看2号,他要想通过就要拿到3票,因此需要贿赂两个兄弟,5号不可能,只能拿4号、3号各一票,很显然,如果3号看到自己分得少于99枚,他是不会同意的,所以2号的分配方式只能是:自己0枚,3号99枚,4号1枚,5号0枚。虽然自己一枚未得,但可以免于一死。
现在就可以考虑1号了,1号要想通过也要拿到3票,只要贿赂4号一枚金币,4号就会投自己一票,3号的票是拿不到了,因为他需要99枚,但可以考虑2号。如果1号通不过,2号面临选择,自己还是一无所有。因此只要贿赂2号一枚金币就能得到2号一票。所以1号的分配方法是:1号98枚,2号1枚,3号0枚,4号1枚,5号0枚。
呵呵,和同屋的同事讨论了好久才搞明白,这个下午没白过啊~~~