- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西北农林科技大学信息工程学院
《算法分析与设计》综合训练实习报告
题目:分治法循环赛日程表
专业班级
指导教师一、 综合训练目的与要求 1
二、 综合训练任务描述 1
三、 算法设计 1
四、 详细设计及说明 3
五、 调试与测试 4
六、 实习日志 6
七、 实习总结 6
八、 附录:核心代码清单 6、综合训练目的与要求
本综合训练是软件工程专业重要的实践性环节之一,是在学生学习完《算法分析》 课程后进行的综合练习。本课综合训练的目的和任务:
(1) 巩固和加深学生对算法分析课程基本知识的理解和掌握;
(2) 培养利用算法知识解决实际问题的能力;
(3) 掌握利用程序设计语言进行算法程序的开发、调试、测试的能力;
(4) 掌握书写算法设计说明文档的能力;
(5) 提高综合运用算法、程序设计语言、数据结构知识的能力。
二、 综合训练任务描述
假设有n=2k个运动员要进行网球循环赛。设计一个满足一下要求的比赛日程表:
(1) 每个选手必须与其他n-1个选手各赛一次
(2) 每个选手一天只能赛一次
(3) 循环赛一共进行n-1天
利用Java语言开发一个界面,输入运动员的个数,输出比赛日程表。对于输入运 动员数目不满足n=2k时,弹出信息提示用户。
三、 算法设计
(1)文字描述
假设n位选手顺序编号为1, 2, 3……n,比赛的日程表是一个n行n-1列的表格。 第i行j列表示第i号选手在第j天的比赛对手,根据分治法,要求n个选手的比赛日 程,只要知道其中一半的比赛日程,所以使用递归最终可以分到计算两位选手的比赛日 程,然后逐级合并,得出结果。
⑵框图
图1(3)伪代码
static int a[][] = new in t[100][100];
static int athletes;
static int n;
static void copy(i nt n) {// 核心代码
int m = n / 2;
for (int i = 1; i = m; i++)
for (int j = 1; j = m; j++) { a[i][j + m] = a[i][j] + m;// a[i + m][j] = a[i][j + m];// a[i + m][j + m] = a[i][j];//
}
}
static void tourname nt(i nt n) // 分治算法,递归调用自己
{
if (n == 1) {
a[1][1] = 1;
return;
}
tourname nt(n / 2); // 分治 copy(n); // 合并
}
public static void main( Stri ng[] args) { n=getText();
athletes = n;
tourn ame nt(n);
}
}
四、详细设计及说明
(1) 输入一个数字n,根据(x (x-1))==0判断n是否等于2Ak。 出错,要求重新输入
(2) 按照分治的策略,将所有参赛的选手分为两部分,tournament(int 递归调用自身,直到n=1.
(3) n=1得出a[1][1] = 1 之后,开始逐级合并,n=n*2,m=n/2,由 =a[i][j] + m 得出 a[1][2],由 a[i + m][j] = a[i][j + m] 得出 a[2][1] m][j + m] = a[i][j] 得出 a[2][2],如下所示:
表1
匚
三
tz
丄
(4)继续n=n*2, m=n/2,可以仍把它看做均分的四个区域, 仍然按照右上,左下,
右下的顺序计算。
由 a[1][1]得出 a[1][3],由 a[1][2]得出 a[1][4],由 a[2][1]得出 a[2][3],由 a[2][2]得出a[2][4],(即由左上角数的值算出对应的右上角数)
由 a[1][3]得出 a[3][1],由 a[1][4]得出 a[3][2],由 a[2][3]得出 a[4][1],由 a[2][4]得出a[4][2],(即把右上角数的值赋给对应的左下角数)
由 a[1][1]得出 a[3][3],由 a[1][2]得出 a[3][4],由 a[2][1]得出 a[4][3],由 a[2][2]得出a[4][4],(即把左上角数的值赋给对应的右下角数)
如下图:
(5)继续照这样递归,直到算出a[i][j] 所有的值
五、调试与测试
测试结果:
图2输入不是2的阶次方的数
图3输入数16的结果
六、 实习日志
5月16日
理解题意,题目要求,确定使用分治法解决
5月17日
根据书上分治法的设计思路以及所提供的代码按题目要求设计算法, 并根据算法写
出核心代码,在C++上实现。
5月18日
在JAVA上实现除
您可能关注的文档
最近下载
- 部编版小学语文六年级上册第四单元教材分析集体备课单元主讲稿(新版).pptx
- 中国农业发展银行贷款业务知识及经济原理测试试卷.docx
- 新人教版八年级上册《全等三角形》单元测试卷.doc VIP
- (完整)16J607建筑节能门窗.pptx VIP
- 广告设计师——国家职业标准(2024年版).pdf VIP
- 医学专业英语教学设计.pptx VIP
- Q/GDW+13053.53—2018++35-750并联电容器成套采购标准(第53部分:110(66)kV变电站10kV-3000kvar-5%电抗率集合式并联电容器成套装置专用技术规范).pdf VIP
- 12 《谏太宗十思疏》(原卷版)-基于“教考衔接”“学习任务”的高中语文教材文言文通关训练(全国通用).docx
- 工程造价咨询机构服务采购项目工程预算结决算审核服务方案咨询方案工作方案.pdf VIP
- 2025《特斯拉汽车营销现状分析及其策略研究》7100字.doc
文档评论(0)