循环赛问题分析与C语言代码-分治法.docVIP

  • 6
  • 0
  • 约7.53千字
  • 约 10页
  • 2018-01-07 发布于河南
  • 举报
循环赛问题分析与C语言代码-分治法

问题描述:设有n个运动员要进行网球循环赛。设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次; (3)当n是偶数时,循环赛进行n-1天。当n是奇数时,循环赛进行n天。 分析过程: 这个问题的解搜索空间是一个n的全排列。要求的解是其中的n个排列,满足条件:第1列n个元素值按增序排列;每行每列没有相同的数。也是一个幻方(除对角线的和不作要求)的问题。 1.n=1 (表1) 1 2. n=2 (表2) 1 2 2 1 3.n=3, (1) 添加一个虚拟选手4#,构成n+1=4 (2) 4/2=2,分两组,每组各自安排(1 2),(3 4) (3)每组跟另一组分别比赛(拷贝)这是四个人比赛的安排 (表3) 4人赛程 1 2 3 4 2 1 4 3 3 4 1 2 4 3 2 1 (4)把虚选手置为0 (表4)3人赛程 1 2 3 0 2 1 0 3 3 0 1 2 0 3 2 1 这是三个人比赛的安排 4. n=4, 见表3 5. n=5, (1)加一个虚选手,n+1=6。安排好6个人的比赛后,把第6个人用0表示即得5人的。 (2) 分成两组(1 2 3) (4 5 6),各3名选手 (3) 依照表4,安排第1组;按表5

文档评论(0)

1亿VIP精品文档

相关文档