阿里巴巴笔试题目之2013.5.5号战报交流问题分析(gossip problem)

原问题描述

    战报交流:战场上不同的位置有N个战士(N>4),每个战士知道当前的一些战况,现在需要这N个战士通过通话交流,互相传达自己知道的战况信息,每次通话,可以让通话的双方知道对方的所有情报,设计算法,使用最少的通话次数,是的战场上的n个士兵知道所有的战况信息,不需要写程序代码,得出最少的通话次数。

解答:

    笔试时候想到的是:

    N-1个人围成一个环,将知道的消息告诉都第N个人,需要N-1次,同时第N-1个人与第N个人交流时,两人互相交流消息,这样子第N-1与第N个人都知道了所有人的信息,接下来第N-1人沿着环将消息传递下去,需要N-2次。 所以需要N-1+(N-2)=2N-3.

   但是实际上这个问题有着更优的解法。

 

扩展的一类问题:

题目:假如我们班有n个MM,每一个MM都有一个独家八卦消息。两个MM可以通过电话联系,一通电话将使得双方都获知到对方目前已知的全部消息。要想所有n个MM都知道所有n条八卦消息,最少需要多少通电话?请给出你们的通话方案。

(来自博客Matrix67:http://www.matrix67.com/blog/archives/1078以及百度文库:http://w

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值