B. 循环赛日程表

    Type: Default 1000ms 256MiB

循环赛日程表

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

  设有n=2kn=2^k个运动员要进行羽毛球循环赛,现要设计一个满足以下要求的比赛日程表:

  • 每个选手必须与其他 n − 1 个选手各比赛一次

  • 每个选手一天只能比赛一次

  • 循环赛一共需要进行 n − 1

  • 请注意比赛日程表的合法性

    一些例子:

  • n=2n=2时的日程表如下表所示

运动员 第一天
1 2
2 1
  • n=4n=4时的日程表如下表所示
运动员 第一天 第二天 第三天
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
  • n=8n=8时的日程表如下表所示
运动员 第一天 第二天 第三天 第四天 第五天 第六天 第七天
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 以验证答案是否正确。

限制

  1k10,n=2k1 \leq k \leq 10, n=2^k

实验二 树与分治策略

Not Claimed
Status
Done
Problem
5
Open Since
2024-10-5 14:00
Deadline
2024-10-5 17:30
Extension
144 hour(s)