单循环比赛算法设计c语言,单循环赛中选手胜负序列求解问题-数据结构与算法课程设计报告.doc...
合肥学院
计算机科学与技术系
课程设计报告
2009~2010学年第二学期
课程
数据结构与算法
课程设计名称
单循环赛中选手胜负序列求解问题
学生姓名
王梦宇
学号
0804012009
专业班级
08计科(2)
指导教师
张贯虹 王昆仑
2010年6月
题目:单循环赛中选手胜负序列求解问题
题目内容:有n个选手p1,p2,p3,…,pn参加了的单循环赛,每对选手之间非胜即负。现在要求求出一个选手序列p1’,p2’,p3’,…,pn’,使其满足pi’胜pi+1’(i=1,…,n-1)。
1、问题分析和任务定义
单循环赛的定义:
单循环赛,是所有参加比赛的队两两进行比赛并且每两队均能相遇一次,最后按各队在全部比赛中的积分、得失分率排列名次。如果参赛球队不多,而且时间和场地都有保证,通常都采用这种竞赛方法。
单循环比赛轮次的计算:
本题有两种不同的理解,第一个是按比赛的积分排名产生胜负序列,第二个是按比赛过程中各个选手间的胜负关系产生胜负序列,具体分析如下:
(1)按比赛中积分排名产生胜负序列:
比赛可规定各个选手之间均遭遇且只遭遇一次,比赛时胜方得1分,负方得-1分,在比赛结束时按积分排序进行排名,由此产生胜负序列关系。
(2)按比赛过程中各个选手间的胜负关系产生胜负序列:
该种方法是以过程中的胜负为标准从而产生胜负序列,当然,这种胜负序列很大的可能性是不唯一的,本程序按课程设计任务书的要求,仅求出其中的一个胜负序列关系,即是在有向图中求解出一条包含所有顶点的简单路径的问题。
2、数据结构的选择和概要设计
(1)对于第一种情况,本实验选用的数据结构是结构体。结构体中包含选手的名字,编号和胜负所得的积分。胜负序列的求解转化为了对所有选手的积分的排序问题。然后根据积分的多少从大到小输出选手的名次、选手姓名、选手编号信息。其概要设计如下:
定义了一个都文件Score.h.主要包含了以下几个功能:
1
1
★★★★欢迎进入积分处理比赛结果菜单★★★★
1 输入比赛选手的信息
2 输出比赛选手的比赛名次
3 根据选手编号查询选手的比赛名次及得分
4 根据选手姓名查询选手的比赛名次及得分
0 结束本菜单操作
*****注:第一次使用本系统时请选择1号功能*****
判断
0
3
2
1
4
使用子函数Creat()用于输入选手信息
使用子函数Order()用来根据积分对选手进行排名
使用子函数Search_num(int num)根据编号查询选手信息
使用子函数Search_name(string name)根据姓名查询选手信息
跳出循环
图1 Score函数的主框架
(2)对于第二种情况,本实验采用的数据结构是有向图,每个选手视为一个顶点,每条边视为选手之间的胜负关系,箭头指向的一方为失败方。所以胜负序列的求解就转化为了图的深度遍历问题(实际上跟有向图的深度遍历不太一样,详情请看源代码附录)。另外为了便于深度遍历有向图,本实验采用的存储结构为图的邻接矩阵存储。
主要框架如下:
Win_Fail.h
Win_Fail.h的功能
子函数Graph *Creat_Graph(int n)用于创建图
子函数Print_Graph(Graph *g,int n)用于输出矩阵
void Push(int num)用于顶点进栈
子函数Pop(int num)用于出栈
子函数intTest(Graph *g,int i,int n)用于测试
子函数voidSearch(Graph *g,int i,int n)用于深度搜索
初始化函数Init()
图2 Win_Fail.h的主框架
(3)主函数的主要框架
主菜单
主菜单
欢迎使用单循环赛中选手胜负序列求解问题程序"
本程序有以下三个功能:
1:以单循环赛中的积分排名为标准
2:以单循环赛过程中的胜负为标准
0:结束操作
Case 1:子函数Score()用于根据积分求解选手序列
Case2:子函数Process()用于根据选手之间的胜负关系求解
Case3:跳出主菜单,即程序运行结束
判断
图3 主函数功能框架
3、详细设计和编码
(1)、对于第一种情况:根据积分求解的详细设计及编码
1、定义如下数据结构的选手类型
typedef struct{ //结构体
string name; //选手的姓名
int num; //选手的编号
int score; //选手所得分数
} player;
2、全局变量的定义
player pl[max];定义全局变量,其中max为
单循环比赛算法设计c语言,单循环赛中选手胜负序列求解问题-数据结构与算法课程设计报告.doc...相关推荐
- 如何求解问题--数据结构与算法入门
如何求解问题–数据结构与算法入门 在学习数据结构与算法前,我们大多有这样的困惑,难道学习了数据结构与算法就能帮助我们解决学习Java.Python时的大作业吗?数据结构与算法是什么? 回答这个问题之前 ...
- c语言程序设计教程高佳琴主编答案,数据结构与算法应用教程.ppt
<数据结构与算法应用教程.ppt>由会员分享,可在线阅读,更多相关<数据结构与算法应用教程.ppt(41页珍藏版)>请在人人文库网上搜索. 1.书名:数据结构与算法应用教程 I ...
- 用c语言编写的99秒表,单片机00到99秒表的课程设计 含源程序,仿真图,文档
这是我上个月做的单片机秒表课程设计,这个课程设计是实现00到99秒的一个秒表, 并且有开始和复位功能, 用了一个星期的时间, 附件里面包含秒表的单片机源程序,proteus仿真电路图和课设文档, 都是 ...
- 单片机串口中断控制流水灯c语言,基于单片机AT89C51控制的中断控制流水灯_课程设计报告...
<基于单片机AT89C51控制的中断控制流水灯_课程设计报告>由会员分享,可在线阅读,更多相关<基于单片机AT89C51控制的中断控制流水灯_课程设计报告(25页珍藏版)>请在 ...
- c语言用两个栈构造队列伪码,数据结构习题线性表栈队列.doc
数据结构习题线性表栈队列 线性表(58) 1. 在单链表.双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少? 2.设线性表的 ...
- 算法那么重要,你还不会?ACM金牌选手教你轻松学习数据结构与算法
无论是传统IT行业.互联网行业.新兴人工智能行业,参加过算法大赛都是企业追捧的人才,并且对本科生的保研.考研,算法竞赛成绩都具有极高的加分值. 李开复曾经把基础课程比拟为"内功", ...
- mooc数据结构与算法python版第十一周作业_中国大学 MOOC_数据结构与算法Python版_2020最新答案学习指南...
中国大学 MOOC_数据结构与算法Python版_2020最新答案学习指南 更多相关问题 [判断题]实际集成运放的上限截止频率为无穷大 [多选题]现代城市的发展凸现出与以往不同的动力机制包括 教师在引 ...
- mooc数据结构与算法python版期末测验_中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案...
中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案 更多相关问题 采用fopen()函数打开文件,支持文件读取的参数有: [简答题]简单阐述高分子材料热-机械特征及成型加工的关系,并 ...
- 在设计四人抢答器中灯全亮_数字电子技术课程设计报告(四人抢答器).doc
Word格式 完美整理 数字逻辑电路 课程设计报告 系 (部): 三 系 专 业: 通 信 工 程 班 级: 12 通 信 2 班 姓 名: 杨 超 学 号: 20120306201 成 绩: 指导老 ...
- 大学生就业咨询系统c语言,大学生就业咨询系统课程设计方案报告.doc
大学生就业咨询系统课程设计方案报告 数据库课程设计报告 课程设计题目:大学生就业咨询系统 学 生 姓 名: 杨帅 专 业 :计算机科学与技术 班 级 : 1230501 学 号 : 201230050 ...
最新文章
- 在ECS上使用Windows “跨区卷”、“条带卷”讨论以及扩容操作
- POJ2186:Popular Cows(tarjan+缩点)
- python数字的鲁棒输入_请教关于python的手写数字识别神经网络问题~~~~
- matlab 矩阵加减乘除运算
- maven(三)最详细的profile的使用
- 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
- sdram 时钟相位_零基础学FPGA (二十五)必会! 从静态时序分析到SDRAM时序收敛(下篇)...
- java floyd_百度百科里面的floyd算法java的代码,总是无法运行。请问是代码有问题吗,如何编译啊?...
- Redis 会遇到的「坑」,你踩过几个?
- perl CGI::Session
- 自己动手开发编译器(四)利用DFA转换表建立扫描器
- LintCode—链表求和(167)
- button执行onclick函数_JavaScript 函数定义与调用
- 基于 libdmtx和zxing的DM二维码识别总结
- Unity贴图ASTC压缩格式
- 前20位Googler今安在?
- 来自阿里巴巴佛系Java程序员的指南,附项目源码
- 自动化测试 selenium 模块 webdriver使用
- redis java excel_7.redis excel读写
- 中文的括号和英文的括号区别_浅谈中英文混排图书的标点和体例