题目链接
校OJ每日一题:今天这题比较简单,因为数据比较小,我们只需要暴力破解就ok了
问题重述
题目描述
输入格式
输出格式
输入输出样例
#样例1
输入:2
输出:
<1>1-2,3-4
<2>1-3,2-4
<3>1-4,2-3
说明/提示
无
大概思路
很简单,就是暴力破解,直接看AC代码吧,需要注意的是我们可以用图来记录两个队之间是否已经比过赛就行,也就是我在代码里面定义的二维列表compare
完整AC代码
n = int(input()) # n<=6
team = 2 ** n # 有这么多个球队
days = 2 ** n - 1 # 要在这些天内完成
compare = [[1 for i in range(team + 1)] for j in range(team + 1)] # 一个图记录球队之间是否已经比过
for day in range(1, days + 1): # 要在这些天内比完
cmp = [1] * (team + 1) # 记录当天这些球队是否已经比赛过了,1没有比
print("<%d>" % day, end="")
count = 1
for one in range(1, team + 1): # 遍历这些球队
if cmp[one]: # 如果当天没有比赛过
for two in range(one + 1, team + 1): # 找到另外一只还没有与他比赛过的球队
if cmp[two] and (compare[one][two]): # 这只球队没有和他比赛过的话
cmp[one] = cmp[two] = 0
compare[one][two] = 0
if count < 2 ** (n - 1):
print(f"{one}-{two}", end=",")
else:
print(f"{one}-{two}")
count += 1
break