Advertisement

C++循环赛日程

阅读量:

问题描述

问题描述:

假设有n=2^k位网球选手需要参与循环赛。现需制定一个符合以下条件的比赛安排表:

(1) 每位选手需与其余n-1名选手各进行一次比赛;
(2) 每位选手在每一天只能参与一场比赛;
(3) 整个循环赛需在n-1天内完成。

设计思路

设计思路:构建一个二维数组a[N][N],用于记录1至N号运动员之间的比赛安排情况,初始值为0;当day从1到N变化时,遍历数组,若二维数组中a[i][j]的行不等于列且对应位置的值为0时,则检查a[i][N]和a[N][j]的内容,若两者均未包含当前day值,则将a[i][j]设置为day;循环结束后输出整个数组a[N][N],并按照day从1到N的顺序依次展示对阵详情。

数据结构

N=2^k=8:参赛人数

a[N][N]:用于存储运动员的日程安排结果

x[N], y[N]:辅助数组,分别记录第i行与第j列的比赛安排情况

算法描述:

CYCLE RACE(N, a[N][N], x[N], y[N])

  1. For i=0 to N-1, j=0 to N-1
  2. a[i][j] <-0
  3. for day=1 to N
  4. for i=1 to N, j=1 to N
  5. If(search(i, j, day,

全部评论 (0)

还没有任何评论哟~