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号放入第一赛区。
他们的赛程安排从上半程