#H22. 循环赛日程表
循环赛日程表
题目描述
设有个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表:
-
每个选手必须与其他
n − 1
个选手各比赛一次 -
每个选手一天只能比赛一次
-
循环赛一共需要进行
n − 1
天 -
请注意比赛日程表的合法性
一些例子:
-
时的日程表如下表所示
运动员 | 第一天 |
---|---|
1 | 2 |
2 | 1 |
- 时的日程表如下表所示
运动员 | 第一天 | 第二天 | 第三天 |
---|---|---|---|
1 | 2 | 3 | 4 |
2 | 1 | 4 | 3 |
3 | 4 | 1 | 2 |
4 | 3 | 2 | 1 |
- 时的日程表如下表所示
运动员 | 第一天 | 第二天 | 第三天 | 第四天 | 第五天 | 第六天 | 第七天 |
---|---|---|---|---|---|---|---|
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 |
你需要实现 Solution
类中的 round_robin_schedule
方法,对于传入的参数 n
,返回一个大小为 n × n
的二维数组。该二维数组满足:
- 所有元素都在
[1, n]
范围内。 - 第一列从上到下依次为
1 ∼ n
。 - 同行或同列的元素不能相同。
提交
请在下述代码基础上进行实现,完成函数后提交
#include "Solution.h"
vector<vector<int>> Solution::round_robin_schedule(int n) {
// 如此构造一个二维数组( nxn 矩阵)
vector<vector<int> > ans;
for(int i=0; i<n; i++) {
ans.push_back(vector<int>(n, 0));
}
// 请在这里完成你的代码
return ans;
}
本题不需要输入输出,如果你需要自测,可以直接输出 ans
以验证答案是否正确。
限制