B题

不妨令第一个集合为

对于第个集合, 我们使用前个集合中每个集合的第个数,剩下的数从当前所有数的最大值开始往上补

这样子保证了任意两个集合肯定有且仅有一个共同元素,且每个元素最多出现两次

代码如下

n = int(input())
maze = [[0 for i in range(n)] for j in range(n)]
maze[0] = list(range(1, n+1))
ma = n
for i in range(1, n):
    for j in range(i):
        maze[i][j] = maze[j][i]
    for j in range(i, n):
        maze[i][j] = ma + 1
        ma += 1
for i in maze:
    print(' '.join(map(str, i)))