再将前3只队伍的对阵列表中的含有第4只队伍的情况置零(
2019女排世界杯,比赛赛制采用12支队伍单循环,两两捉对厮杀一场定胜负,依次进行。
比赛开始把12个队分成AB两个组进行,当同组每一个选手都碰面以后,再重新分组进行比赛,确保12支队伍每两支都相遇一次,最终将根据先胜负场次后积分的排名顺序。
编程实现:输入球队的数量,得出比赛的对阵表。
提醒:
1.参赛队伍的数量不同可能会产生轮空的现象(某个队伍当天没有比赛)
2.需要分成两种情况来考虑,存在轮空和不会存在轮空
不会存在轮空:2、4、8、16、32…
存在轮空:3、5、6、7、9…
讨论参赛队伍的对阵情况:
(1)2个队伍的时候,比赛对阵表如图所示:
2个队伍的对阵表
(2)3个队伍的时候,会存在队伍轮空(当天不存在比赛)的情况。暂时不考虑。
(3)4个队伍的时候,对阵表如图所示
4个队伍的对阵表
可知以4个队伍的比赛赛程安排是建立在黄色区域(两只队伍的对阵表)为已知基础上的,且满足已下关系:
蓝色区域:对应的位置是黄色区域的对应位置上的值+2
绿色区域:对应的位置是黄色区域的对应位置上的值+2
红色区域:对应的位置是黄色区域的对应位置上的值相等
(4) 5,6,7只队伍暂时不考虑(均存在轮空的情况)。先直接考虑8个队伍的对阵表
8个队伍的对阵表
分治法实现:
把8个队伍的数据表示分成4小个区域。每个小区域又是由四个小区域构成。
区域之间的关系满足下列条件:
变化的值:
每一个小区域和左上角固定区域之间值的关系(蓝色区域:对应的位置是黄色区域的对应位置上的值+2)
三组for整体执行的次数:
(三次for构成一个完整的小区域,比如四只参赛队伍需要执行一次三组for。 整体执行次数则表示构成当前阵列需要执行多少次组合)
区域之间满足的关系
再考虑存在参赛队伍存在轮空的情况
(1)3个队伍的时候。
3个队伍的对阵表
3支队伍的对阵表等同于先计算4只队伍的参赛情况,然后去掉第4只队伍的对阵情况,再将前3只队伍的对阵列表中的含有第4只队伍的情况置零(即轮空),则实现了3只队伍的对阵表
(2)5个队伍的时候。
5支队伍的对阵表等同于先计算8只队伍的参赛情况,然后去掉第5只队伍之后的队伍的对阵情况,再将前5只队伍的对阵列表中的含有第5只队伍的之后的队伍的情况置零(即轮空),则实现了5只队伍的对阵表
综上所述:
(1)我们可以先直接计算不存在轮空现象的参赛队伍的情况
(2)然后再通过置零的方法,实现存在轮空对阵的参赛队伍的情况
(3)从而实现输入队伍数量,输出对阵表
实现效果如下:
程序实现效果
代码小白,仅作学习记录📝
相关文章
- PDD唱个歌遭起诉索赔10万?原因不会是……
- 意大利5-2复仇北马其顿,基耶萨双响,若日尼奥又失点|意大利|北马其顿|达米安|迪马尔科|巴雷拉|沙拉维|贝拉尔迪|阿利奥斯基|费代里科-基耶萨|阿塔纳索夫|拉斯帕多里|懂球帝
- 2024年欧洲杯德国队球衣穆勒克罗斯训练足球服套装 男定制比赛队服 - 运动/瑜伽/健身/球迷用品 - 便宜推 触屏版
- 如何加入微信群,这个方法简单又快捷_手机搜狐网
- 全新梅赛德斯-奔驰长轴距GLC SUV兼具智能与豪华,实力全面升级|奔驰GLC级_新浪财经_新浪网
- 快手宣布成为2024电竞世界杯短视频及直播战略合作平台
- 布冯透露取胜秘诀 否认欧洲杯赛事期间看A片_体育_腾讯网
- 众望所归!欧冠16强出炉:强队纷纷好签 梅罗大战再度上演|曼联|切尔西队|利物浦|曼城|国际米兰_网易订阅
- 不再是唱得比踢得好,李圣龙终于等来了生涯的“好时光”!_上观新闻
- 俄罗斯网络用语大词典_手机搜狐网