...wd...
...wd...
...wd...
问题描述:设有n个运发动要进展网球循环赛。设计一个满足以下要求的比赛日程表:
〔1〕每个选手必须与其他n-1个选手各赛一次;
〔2〕每个选手
1
2
7
0
5
6
4
3
2
1
0
7
6
5
5
6
7
0
1
2
3
4
6
5
0
7
2
1
4
3
7
0
5
6
3
4
1
2
0
7
6
5
4
3
2
1
...wd...
...wd...
...wd...
8 n=8 ,见表10。
9 n=9,由n+1=10人,将虚选手10号置为0来得到。
10 n=10。10人的比赛,分两组〔1 2 3 4 5〕和(6 7 8 9 10)各5人。前5人比赛的安排如表9
〔表12〕
1
2
3
4
5
0
2
1
5
3
0
4
3
0
1
2
4
5
4
5
0
1
3
2
5
4
2
0
1
3
第2组的5人比赛就是将前5人比赛选手〔非0〕号对应加5
〔表13〕
6
7
8
9
10
0
7
6
10
8
0
9
8
0
6
7
9
10
9
10
0
6
8
7
10
9
7
0
6
8
然后两组合并
〔表14〕
1
2
3
4
5
0
2
1
5
3
0
4
3
0
1
2
4
5
4
5
0
1
3
2
5
4
2
0
1
3
6
7
8
9
10
0
7
6
10
8
0
9
8
0
6
7
9
10
9
10
0
6
8
7
10
9
7
0
6
8
找两组中同一天中没有安排比赛的,安排他们比赛:
〔表15〕
1
2
3
4
5
6
2
1
5
3
7
4
3
8
1
2
4
5
4
5
9
1
3
2
5
4
2
10
1
3
6
7
8
9
10
1
7
6
10
8
2
9
8
3
6
7
9
10
9
10
4
6
8
7
10
9
7
5
6
8
由于两组中:
1 2 3 4 5
6 7 8 9 10
按列对应的已经比赛过一次:1-6,2-7,3-8,4-9,5-10。后面再安排两组选手分别比赛的时候,就不考虑已经比赛过的组合。
安排两组选手分别比赛的时候,依照这样的规那么:1#按递增顺序依次跟没有比赛过的第2组选手比赛〔7,8,9,10各一天〕。假设1#和x1比赛,那么2号从6~10号中从x1之后开场按增序中找第一个没有比赛过的选手,跟他比赛(如果x1=10,那么2号从6号开场按增序找)。3、4、5号也如此找。结果如表16所示:
〔表16〕10人的赛程安排
1
2
3
4
5
6
7
8
9
10
2
1
5
3
7
4
8
9
10
6
3
8
1
循环赛问题分析和c语言代码-分治法 来自淘豆网m.daumloan.com转载请标明出处.