题目描述
设有有2^n(n<=6)个球队进行单循环比赛,计划在2^n–1天内完成,每个队每天进行一场比赛。设计一个比赛的安排,使在2^n–1天内每个队都与不同的对手比赛。
输入
共一行,输入n的数值。
输出
共(2^n – 1)行,第i行输出第i天的比赛安排。
格式为:<i> A-B C-D 其中i是天数,A,B分别为比赛双方的编号,每行共2n-1个比赛场次。样例输入
2样例输出
<1>1-2 3-4 <2>1-3 2-4 <3>1-4 2-3
原题链接:[蓝桥杯][算法训练VIP]比赛安排
思路:
以n=3为例,总共8个人,7天,那么第一列必是1和另外七个人打。
后面的还没打过的两两一组,但是注意如果他们俩前些日子打过了,就不要安排他们一起打了,所以用到viss数组记录谁跟谁打过。
【采用链表遍历的思想,但是这里直接判断】
两个vis数组变量说明:
名称 | 作用 |
---|---|
vis[100] | 贯穿一行,vis[j]表示这一天中j已经打过了,请不要再安排他 |
viss[100] | 贯穿整个程序,viss[i][j] 表示“i-j”已 |