NOJ 1243.循环赛日程表

该博客介绍了如何运用分治算法来生成一个包含2的n次方个人的循环赛日程表,提供了具体的输入输出示例,包括不同轮次的比赛安排。
摘要由CSDN通过智能技术生成

1243.循环赛日程表

时限:1000ms 内存限制:10000K  总时限:3000ms

描述

用分治算法生成循环赛日程表(1到2的n次方个人)

 

输入

一个小于等于7的正整数n

 

输出

循环赛日程表(1到2的n次方个人)

 

输入样例

3

 

输出样例

1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1

 

提示

 

来源

 

/*
思路:二分法
假设有两名比赛队员,那么两个人的编号就是1、2
如果有四名队员,那么编号就是1、2、3=(1+2)、4=(2+2)
如果有八名队员,那么编号就是1、2、3、4、5=(1+4) 6=(2+4) 7=(3+4) 8=(4+4)
此时应该可以看出规律了,他们唯一的不同就是编号。
以四人为例: 
那么我们可以将其分为两个赛区,第一赛区1和2号,第二赛区3和4
那么第一赛区的安排和第二赛区的安排就一模一样(不同之处在于选手编号在第一赛区基础上+2)
那么赛程的上半程就可以直接安排出来了
接下来安排赛程的下半程,将1号和2号放入第二赛区,3号和4号放入第一赛区。
他们的赛程安排从上半程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值