Advertisement

C++程序-运动赛事排期问题

阅读量:

问题描述

为确保运动会顺利进行,在合理规划各场比赛的时间安排时,请考虑以下两个要点:第一,在同一时间段内不允许多名同一名运动员参与不同的项目;第二,则需确保整个赛事的时间线尽可能紧凑。本次运动会共有9个项目待赛,并规定每位参赛运动员最多只能参与3个项目。

求解策略: 初始状态:将集合A中的元素放入cq中,并使Result和newr被置零;初始化组号为group=1。

每当第一个元素被出队时

新生成的第一组成员由那些在新的r向量中标记为'0'的位置所对应的序号组成

输入样例:

A={1, 2, 3, 4, 5, 6, 7, 8, 9}

R={(1,2,3),(4,5,6),(7,8,9),(1,4,7),(2,5,8),(3,6,9)}

输出样例:

第1天安排项目为:1, 5, 9,

第2天安排项目为:2, 4,

第3天安排项目为:3, 7,

第4天安排项目为:6, 8,

设计思路

设计思路:采用循环筛选的方式进行处理。首先以第一个元素为基础,在所有与第一个元素无冲突的其他元素中形成一组;接着对剩余未分组的元素进行同样的操作,并不断重复此过程直至所有待分组的元素都被分配到相应的组别中。在计算机实现时,则需要建立一个二维数组R[1:n, 1:n]来表示各元素除了之间的冲突关系;当第i个和第j个元素除了存在冲突时(即有共

全部评论 (0)

还没有任何评论哟~