阿里巴巴2013/5/19第十八题的感想

本文探讨了五个玩家进行对战游戏时,为了确保任意两人之间都有过红方对蓝方和蓝方对红方的比赛,最少需要进行多少场比赛。通过递归式分析得出结论,T(5)=6。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:宿舍内有五个童鞋一起玩对战游戏,每场比赛有一些人作为红方,另外一些人作为蓝方,请问至少需要多少场比赛才能使得任意两个人之间有一场红方对蓝方和一场蓝方对红方的比赛,请写出思路。

分析:更具一般性而言,舍有n个人玩对战游戏好喽,要使得任意两个人之间都发生过两种关系(虽然不雅,这里暂时称作“发生关系”)。那么要使得总的比赛次数尽可能小,则每场比赛就要使得尽量多的新的关系产生,比如,第一场比赛,假设红方有m个人,蓝方放了n-m个人,则总共产生m*(n-m)个关系,其中1<=m<=n-1,由简单二次函数性质可得,m为n/2的向上或者向下取整(由于对称性,这两种解其实是一致的),第二场比赛的话,则很显然是将第一场双方调换方为最优。两场比赛结束后,剩下要处理的,则是m和n-m这两拨人内部怎样在最少比赛次数内相互发生关系。。。。。。

由于比赛人数不受限制,所以,这两拨人内部发生新关系这一棘手的问题可以一起处理,比如说a,b,c,d四个人,刚开始ab和cd交叉发生关系,然后轮到解决a和b,c和d的问题时,可以把a,c放在一边,b,d放在一边,这样再搞两场,该发生的关系都会发生完了。。。。。。

也就是说,人数为m的那一拨人内部发生关系和n-m那拨人内部发生关系可以共同处理,根本不受对方影响。。。。。。于是,其实两拨人最终最优的所需场次数就和人数多的那拨人相关,鉴于上述阐述,得到递归式如下:

此递归式简化得:

所以T(5)=T(3)+2=T(2)+4=T(1)+6,T(1)=0;

T(5)=6;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值