分治法循环赛c语言,循环赛问题分析和C语言代码-分治法.doc
WORD格式整理版
学习好帮手
问题描述:设有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安排第2组(除0元素外,都加3)
(表5)
4
5
6
0
5
4
0
6
6
0
4
5
0
3
2
1
(4) 把表5排于表4下方
(表6)
1
2
3
0
2
1
0
3
3
0
1
2
4
5
6
0
5
4
0
6
6
0
4
5
(5) 把同一天都有空的两组安排在一起比赛(按这种安排,肯定每天只有一对空组,?)。
(表7)
1
2
3
4
2
1
5
3
3
6
1
2
4
5
6
1
5
4
2
6
6
3
4
5
(6) 第一组的(1 2 3)和第2组的(4 5 6)分别比赛。 但是由于(1,4), (2, 5), (3 6)已经比赛过了,所以在后面的安排中不能再安排他们比赛。
1 2 3
4 5 6
首先,1#只能和5#或6#比赛。
若1#-5#,由于3#和6#已经比赛过,所以只能安排: 2#-6#, 3#-4#
若1#-6#,由于2#和5#已经比赛过,只能安排: 2#-4#, 3#-5#
这样安排后前三行的后两列,后三行的后两列由上面的三行来定:
(表8)6人赛程
1
2
3
4
5
6
2
1
5
3
6
4
3
6
1
2
4
5
4
5
6
1
3
2
5
4
2
6
1
3
6
3
4
5
2
1
表8就是6名选手的比赛日程安排。将其中的6号作为虚拟选手,把6换成0,即得5名选手的赛程安排表:
(表9)5人赛程
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
3
4
5
2
1
6 n=6,见表8。
7 n=7, 添加1,n+1=8。8名选手的安排,由4名选手(表3)构成
(表10)8人赛程
1
2
3
4
5
6
7
8
2
1
4
3
6
5
8
7
3
4
1
2
7
8
5
6
4
3
2
1
8
7
6
5
5
6
7
8
1
2
3
4
6
5
8
7
2
1
4
3
7
8
5
6
3
4
1
2
8
7
6
5
4
3
2
1
将其中的8改成0,即得7名选手的赛程安排。
(表11)7人赛程
1
2
3
4
5
6
7
0
2
1
4
3
6
5
0
7
3
4
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
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)号对
分治法循环赛c语言,循环赛问题分析和C语言代码-分治法.doc相关推荐
- c语言报告程序分析报告,2012C语言程序分析报告.doc
2012C语言程序分析报告 C语言程序设计专周 专 周 报 告 班级:10611 学号:20 姓名: 设计时间:2011-5-30至2011-6-3 一.设计题目:职工工资管理小软件 二.实习目的 1 ...
- c语言程序设计试卷分析,《c语言程序设计》 试卷分析.doc
2011-2012学年第二学期第一次诊断考试 <c语言程序设计> 试卷分析 一.试卷概况 C语言程序设计在"专业基础知识测试"考试科目中占分100分,是计算机专业学生中 ...
- c语言报告程序分析报告,C语言程序设计报告
1.科目:C语言程序设计老师:姓名:学号:专业:化学工程与工艺实验二(1) 输入下面的程序,进行编译,记录编译时出现的信息,分析出现这些错误信息的原因:按照自己的分析改正错误后,再进行编译,链接和运行 ...
- 代数式对应的C语言表达式不等价的是( ),C语言重修复习题分析.doc
C语言重修复习题分析 <C语言程序设计>重修复习题 一.单项选择题 判断char型变量c1是否为大写字母的正确表达式为 ( B ). A) (c1>='A' || c1<='Z ...
- 熟练掌握R语言的Meta分析全流程和不确定性分析,并结合机器学习等方法讲解Meta分析在文献大数据的延伸应用
Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...
- 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...
- 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习应用
Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...
- LU分解法c语言程序设计,矩陣LU分解求逆详细分析与C语言实现.doc
矩陣LU分解求逆详细分析与C语言实现 题目要求 给定一个多维矩阵,实现该矩阵的求逆运算. 1.理论分析 矩阵的一种有效而广泛应用的分解方法是矩阵的LU三角分解,将一个n阶矩阵A分解为一个下三角矩阵L和 ...
- 国二c语言题目给分,及三计算机国二c语言个别考题分析.docx
2018年九月及三月计算机国二c语言个别考题分析 九月: (1>下列叙述中正确的是(>. A>算法就是程序 B>设计算法时只需要考虑数据结构的设计 C>设计算法时只需要考 ...
最新文章
- java程序实验总结_Java Socket 编程实验总结
- .Net学习笔记----2015-07-10(GDI绘图)
- php数据库录入和输出,PHP数据库之CURD操作
- SSIM(structural similarity index),结构相似性
- 如何自定义SAP Spartacus的路由路径
- 2021中考高考成绩查询,2021中考
- 华为智能手环智能手表软件测试,一块智能手表的测试之旅,揭秘华为运动健康科学实验室...
- SCCM2012软件更新(WSUS补丁)同步成功无法获取补丁问题
- 什么是动态链接库(DLL)以及常见问题
- 20 个 GPU 可承载相当于全球互联网流量、Grace CPU 超级芯片现世,英伟达这届 GTC 发布了什么?...
- 【渝粤题库】广东开放大学 市场调查与预测 形成性考核
- MATLAB柱状图去掉黑色边框
- C++打开网页,发起QQ对话,调用外部exe程序
- 个人家用nas_家庭私有云盘系列教程-本地搭建家庭NAS方案
- 【Oracle】更新数据表字段值
- Hadoop(二):入门
- 【论文笔记】Learning to Count in the Crowd from Limited Labeled Data
- 新互联网装逼词汇,今天你装了吗
- 收藏!2022母婴行业五个高增长小众类目盘点(含真实销售数据)
- win7下framework3.5 安装不成功的教训
热门文章
- Android逆向之旅---Android中的GG大玩家应用破解教程分析
- Springboot信息泄露以及heapdump的利用
- 开学先导思想:IT事业者必须清醒意识到计算机系统在宇宙人生中的本质作用和意义
- 小程序-input框如何输入带有emoji表情功能
- Windows命令查看端口(或使用TCPView工具)
- 进程已不存在,但端口仍被占用,TcpView显示进程名为[non-existent]
- 企业战略的作用有哪些?
- 一个mss大小引发的思考
- HTML中属于target属性有,HTML的target属性
- 微信开发者工具黑屏【终极解决方案】