数据结构应用-田径赛的时间安排

  假设某校的田径选拔赛共设六个项目的比赛,即跳高、跳远、标枪、铅球、100米和200米短跑,规定每个选手至多参加三个项目的比赛。现有五名选手报名比赛,选手所选择的项目如参赛选手比赛项目表所示。现在要求设计一个竞赛日程安排表,使得在尽可以短的时间内安排完比赛。
(1)为了能较好地解决这个问题,首先应该选择一个合适的数据结构来表示它。2表示该问题的数据结构模型图如右下图(图中顶点代表竞赛项目,在所有的两个不能同时进行比赛的项目之间连上一条边)。显然同一个选手选择的几个项目是不能在同一时间内比赛的,因此该选手选择的项目中应该两两有边相连。
(2)竞赛项目的时间安排问题可以抽象为对无向图进行"着色"操作:即用尽可能少的颜色去给图中每个顶点着色,使得任意两个有边连接的相邻顶点着上不同的颜色。每一种颜色表示一个比赛时间,着上同一种颜色的顶点是可以安排在同一时间内竞赛的项目。由此可得:只要安排4个不同的时间竞赛即可。时间1内可以比赛跳高(A)和标枪(C),时间2内可以比赛跳远(B)和铅球(D),时间3和时间4内分别比赛100米(E)和200米(F)。
    解决问题的一个关键步骤是,选取合适的数据结构表示该问题,然后才能写出有效的算法。

 数据结构应用-田径赛的时间安排_第1张图片

你可能感兴趣的:(数据结构,c,算法)