2010计算机算法分析与设计任务书
计算机算法设计与分析课程设计

计算机算法设计与分析课程设计成绩评定表课程设计任务书算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。
算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。
在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。
分治法字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
在一个2^k*2^k的棋盘上,恰有一个放歌与其他方格不同,且称该棋盘为特殊棋盘。
回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法。
数字拆分问题是指将一个整数划分为多个整数之和的问题。
利用回溯法可以很好地解决数字拆分问题。
将数字拆分然后回溯,从未解决问题。
关键词:分治法,回溯法,棋盘覆盖,数字拆分1分治法解决期盼覆问题 (1)1.1问题描述 (1)1.2问题分析 (1)1.3算法设计 (1)1.4算法实现 (2)1.5结果分析 (3)1.6算法分析 (4)2回溯法解决数字拆分问题 (6)2.1问题描述 (6)2.2问题分析 (6)2.3算法设计 (7)2.4算法实现 (7)2.5结果分析 (8)参考文献 (9)1分治法解决期盼覆问题1.1问题描述在一个2k×2k(k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。
显然,特殊方格在棋盘中出现的位置有4k中情形,因而有4k中不同的棋盘,图(a)所示是k=2时16种棋盘中的一个。
棋盘覆盖问题要求用图(b)所示的4中不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且热河亮哥L型骨牌不得重复覆盖1.2问题分析用分治策略,可以设计解决棋盘问题的一个简介算法。
当k>0时,可以将2^k*2^k棋盘分割为4个2^k-1*2^k-1子棋盘。
算法设计与分析实验指导书

算法设计与分析实验指导书. . .. . .算法设计与分析实验指导书东北大学软件学院2012年.. .专业. .目录算法设计与分析 (1)实验指导书 (1)前言 (3)实验要求 (4)实验1 分治法的应用(2学时) (5)1.实验目的 (5)2.实验类型 (5)3.预习要求 (5)4.实验基本要求 (5)5.实验基本步骤 (7)实验2动态规划(2学时) (9)1.实验目的 (9)2.实验类型 (9)3.预习要求 (9)4.实验基本要求 (9)5.实验基本步骤 (10)实验3 回溯法(4学时) (12)1.实验目的 (12)2.实验类型 (12)3.预习要求 (12)4.实验基本要求 (12)5.实验基本步骤 (13)前言《算法设计与分析》是一门面向设计,处于计算机科学与技术学科核心地位的教育课程。
通过对计算机算法系统的学习,使学生理解和掌握计算机算法的通用设计方法,培养对算法的计算复杂性正确分析的能力,为独立设计算法和对算法进行复杂性分析奠定基础。
要求掌握算法复杂度分析、分治法、动态规划法、贪心法、回溯法、分支限界法等算法的设计方法及其分析方法。
能将这些方法灵活的应用到相应的问题中,并且能够用C++实现所涉及的算法,并尽量做到低复杂度,高效率。
通过本课程的实验,使学生加深对课程容的理解,培养学生严密的思维能力,运用所学知识结合具体问题设计适用的算法的能力;培养学生良好的设计风格,激励学生创造新算法和改进旧算法的愿望和热情。
希望同学们能够充分利用实验条件,认真完成实验,从实验中得到应有的锻炼和培养。
希望同学们在使用本实验指导书及进行实验的过程中,能够帮助我们不断地发现问题,并提出建议,使《算法设计与分析》课程成为对大家有益的课程。
实验要求《算法设计与分析》课程实验的目的是为了使学生在课堂学习的同时,通过一系列的实验,使学生加深理解和更好地掌握《算法设计与分析》课程教学大纲要求的容。
在《算法设计与分析》的课程实验过程中,要求学生做到:(1)仔细观察调试程序过程中出现的各种问题,记录主要问题,做出必要说明和分析。
《算法分析与设计》大型作业

2010/2011第二学期计算机科学与技术专业2009级《算法分析与设计》课程大型作业班级:3110902学号:2009214390姓名:王真旎遗传算法一、算法背景遗传算法是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。
其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。
遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。
它是现代有关智能计算中的关键技术。
进入90年代,遗传算法迎来了兴盛发展时期,无论是理论研究还是应用研究都成了十分热门的课题。
尤其是遗传算法的应用研究显得格外活跃,不但它的应用领域扩大,而且利用遗传算法进行优化和规则学习的能力也显著提高,同时产业应用方面的研究也在摸索之中。
此外一些新的理论和方法在应用研究中亦得到了迅速的发展,这些无疑均给遗传算法增添了新的活力。
遗传算法的应用研究已从初期的组合优化求解扩展到了许多更新、更工程化的应用方面。
二、算法内容1.算法的简单描述遗传操作是模拟生物基因遗传的做法。
在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。
从优化搜索的角度而言,遗传操作可使问题的解,一代又一代地优化,并逼近最优解。
1.1创建一个随机的初始状态初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样,在那里问题的初始状态已经给定了。
1.2.评估适应度对每一个解(染色体)指定一个适应度的值,根据问题求解的实际接近程度来指定(以便逼近求解问题的答案)。
不要把这些“解”与问题的“答案”混为一谈,可以把它理解成为要得到答案,系统可能需要利用的那些特性。
《算法分析与设计》实验指导书

计算机算法分析与设计实验指导书
杨红云
适用专业:软件工程
江西农业大学软件学院
计算机算法分析与设计实验指导书
计算机算法分析与设计是面向设计的,它是计算机科学和软件工程应用的核心。
无论是计算机系统、系统软件和解决计算机的各种应用课题都可归结为算法的设计。
通过本课程的学习,使学生掌握计算机领域中许多常用的非数值的精确的描述:分治法、贪心法、动态规划、回溯法等。
并掌握算法分析的方法。
从而将学生分析问题和解决问题的能力提高到高层理论的高度。
前期课程为程序设计语言、数据结构、高等数学,即学生应该具备一门高级语言程序设计编程基础,学习基本的数据结构知识,还要求学生掌握较好的数学基础。
实验学时:16学时。
计算机课程设计任务书

计算机课程设计任务书全文共四篇示例,供读者参考第一篇示例:计算机课程设计任务书一、课程名称:计算机应用课程设计二、课程编号:COMP101三、授课教师:XXX四、课程简介:计算机应用课程设计是一门针对计算机专业学生的实践性课程,旨在培养学生独立分析问题、设计解决方案的能力。
通过本课程的学习,学生将深入了解计算机应用的基本原理和实践技巧,掌握各类应用软件的开发与设计方法,培养实践动手能力和团队合作精神。
五、课程目标:1. 理解计算机应用的基本原理和技术;2. 掌握各类应用软件的开发和设计方法;3. 能够独立分析问题,设计解决方案;4. 培养实践动手能力和团队合作精神。
六、课程内容:1. 计算机应用基础知识介绍2. 软件开发工具及技术3. 基本软件应用开发4. 软件测试与调试技术5. 软件项目管理与团队合作七、实践任务:1. 设计一个简单的桌面应用软件,实现基本的功能:如文本编辑、图形绘制等;2. 运用所学的软件开发技巧,设计一个网页应用程序,实现数据交互和动态效果;3. 结合实际案例,进行软件测试与调试,找出问题并解决;4. 分组进行软件项目管理的实践,体验团队协作的重要性。
八、实践作业要求:1. 按时提交每个阶段的实践作业,包括设计文档、代码和测试报告;2. 在团队合作实践中,积极参与讨论和合作,分工明确,任务完成及时;3. 完成个人项目设计和实现,具有一定的创新性和实用性。
九、考核方式:1. 课堂表现(15%)2. 实践作业(40%)3. 期末考核(45%)十、课程教材:1. 《计算机应用基础》2. 《软件开发技术》3. 《软件测试与调试指南》十一、参考资料:1. https:///2. https:///3. https:///以上为本课程的设计任务书,希望同学们认真学习和实践,掌握计算机应用的基本原理与技术,提升实践能力和团队合作意识。
祝大家学习愉快!第二篇示例:任务书二、任务目标1. 通过本次课程设计,学生要掌握Java、Python或C++等编程语言的基础知识和程序设计技巧。
2010级数据结构课程设计任务书

161. 运动会分数统计【问题描述】参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。
写一个统计程序产生各种成绩单和得分报表。
【基本要求】1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5)数据存入文件并能随时查询6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整型。
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
测试数据:【测试数据】要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
例如,对于n=4,m=3,w =2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。
【实现提示】可以假设n≤20,m≤30,w≤20,姓名长度不超过20 个字符。
每个项目结束时,将其编号、类型符(区分取前五名还是前三名) 输入,并按名次顺序输入运动员姓名、校名(和成绩)。
【选作内容】允许用户指定某项目采取其他名次取法。
162. 约瑟夫环【问题描述】约瑟夫(Joseph) 问题的一种描述是:编号为1,2,… ,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。
计算机算法设计与分析实验指导书
计算机算法设计与分析实验指导书本书是为配合《算法分析与设计实验教学大纲》而编写的上机指导,其目的是使学生消化理论知识,加深对讲授内容的理解,尤其是一些算法的实现及其应用,培养学生独立编程和调试程序的能力,使学生对算法的分析与设计有更深刻的认识。
上机实验一般应包括以下几个步骤:(1)准备好上机所需的程序。
手编程序应书写整齐,并经人工检查无误后才能上机。
(2)上机输入和调试自己所编的程序。
一人一组,独立上机调试,上机时出现的问题,最好独立解决。
(3)上机结束后,整理出实验报告。
实验报告应包括:题目、程序清单、运行结果、对运行情况所作的分析。
本书共分阶段6个实验,其具体要求和步骤如下:实验一分治算法(2学时)一、实验目的与要求1、熟悉二分搜索算法;2、初步掌握分治算法;二、实验题设a[0:n-1]是一个已排好序的数组。
请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置i和大于x的最小元素位置j。
当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
三、实验提示用i,j做参数,且采用传递引用或指针的形式带回值。
bool BinarySearch(int a[],int n,int x,int& i,int& j){int left=0;int right=n-1;while(left<right){int mid=(left+right)/2;if(x==a[mid]){i=j=mid;return true;}if(x>a[mid])left=mid+1;elseright=mid-1;}i=right;j=left;return false;}实验二动态规划算法(2学时)一、实验目的与要求1、熟悉最长公共子序列问题的算法;2、初步掌握动态规划算法;二、实验题若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。
14、陆军棋游戏软件设计
数学与计算机学院课程设计说明书课程名称: 算法设计-课程设计课程代码: 8404101题目:陆军棋游戏软件设计年级/专业/班:学生姓名:开始时间:2010 年12月26日完成时间:2011 年01月09 日学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总分(100)指导教师签名:年月日算法设计与分析课程设计任务书学院名称:数学与计算机学院课程代码:8404101专业:信息与计算科学年级:2007级一、设计题目陆军棋游戏软件设计二、主要内容陆军棋是小朋友喜欢玩的游戏。
陆军棋的目的是攻占对方的军旗,而由于棋子都是盖着的,因此在布署、进攻及防守时都有其学问,是一个相当好玩的策略益智游戏。
现要求设计一程序能完成陆军棋游戏功能。
三、具体要求及提交的材料(1)其中棋盘布局为:行走路线包括公路线和铁路线,显示较细的是公路线,任何棋子在公路线上只能走一步,显示为粗黑的为铁路线,铁路上没有障碍时,工兵可在铁路线上任意行走,其它棋子在铁路线上只能直走或经过弧形线,不能转直角弯;(2)棋子落点包括结点、行营、两个司令部,行营是个安全岛,进入以后,敌方棋子不能吃行营中的棋子,军旗必须放在司令部中,进入任何司令部的棋子不能再移动;(3)棋子布局的限制为:炸弹不能放在第一行,地雷只能放在最后两行,军棋只能放在司令部;(4)吃子规则为:司令>军长>师长>旅长>团长>营长>连长>排长>工兵,但只有工兵可以挖地雷。
工兵可以顺着1黑1白的轨道走,只要不出轨道走多远都可以。
军旗与地雷不能走,任何人都可以抗军旗!军旗没了就输了,任何人碰到炸弹会一起消失……;(5)胜负判决方法为:最后的幸存的一方为胜家,军旗被扛、无棋可走、超时5次都会被判负。
四、主要技术路线提示主要是回溯算法的应用、网络编程以及可视化程序的编写。
五、进度安排1、第一周:分析题目的需求,设计抽象数据类型、构思算法、通过类的设计实现抽象数据类型并编写上机程序2、第二周完成程序开发,进行测试并分析结果,最后撰写课程设计报告六、推荐参考资料[1] 《算法设计与分析》宋文等编重庆大学出版社,2001。
2010年《C++程序设计》实践任务书
《计算机程序设计基础》-C++实践任务书时间:2010年上18-19周班级:材料0914-15 指导教师:邓明生一、实践目的要求灵活运用《C++程序设计》课程所学基础知识,培养学生独立设计小型软件系统的能力,并初步掌握C++面向对象可视化程序设计方法;同时培养自学能力;训练小论文撰写能力。
二、设计任务(从下列5个项目中选择1个进行设计,每个题最多允许6人选;写出实践报告。
)1.学生基本信息管理软件设计:可以采用结构体数组结合文件形式存储学生的信息,每个学生应包含如下几方面的信息(其中后三项的值指成绩):学号、姓名、性别、学院、专业班级,外语、计算机、数学。
软件由主模块(含欢迎界面)+下列5个功能模块组成:(1)删除一个学生的信息(需指定要删除学生的学号);(2)增加一个学生的信息(需输入要增加学生的所有信息);(3)查找一个学生的信息(需指定学号或姓名);(4)按三门课总分排列所有学生信息;(5)退出程序的运行。
2.图书馆图书基本信息管理软件设计:可以采用结构体数组结合文件形式存储每本书的信息,每本书应包含如下几方面的信息:主编、出版社、出版年、版次、ISBN书号、书名、定价、拥有本数、借出本数、现余本数。
软件由主模块(含欢迎界面)+下列4个功能模块组成:(1)借出功能(被借之书“借出本数”增1,“现余本数”减1);(2)归还功能;(3)查找功能(需指定书的某项信息,查找该书目前借出、余存信息);(4)退出程序。
3.高校在职职工简单管理软件设计:可以采用结构体数组结合文件形式存储职工的信息,每个职工应包含如下几方面的信息:职工号、姓名、性别、所属二级单位、所学专业、职称、月工资。
软件由主模块(含欢迎界面)+下列5个功能模块组成:(1)减少一个职工(需指定要删除职工的职工号);(2)增加一个职工号(需输入要增加职工号的所有信息);(3)查找一个职工号的信息(需指定职工号或姓名);(4)统计指定二级单位的职工人数、工资总额;(5)退出程序的运行。
计算机算法设计方案书与分析报告
计算机算法设计与分析(书要整体看看再结合老师画的重点)第一章1.算法:是在有限步骤内求解某一问题所使用的一组定义明确的规则。
程序:是算法用某种程序设计语言的具体实现。
1.算法评定标准:时空的观点标准1 算法在计算机上的执行的时间最短。
标准2 算法所需要的存储空间最小。
发展的观点标准3 算法的适应性强。
设计的观点标准4 算法的设计时间少。
交流的观点标准5 算法容易理解。
2.时间复杂性论:原因:所有关于时间复杂性增长的阶的定义和渐近界的讨论都可移植到空间复杂性的讨论中。
算法的空间复杂性相对简单,它不可能超过运行时间的复杂性,因为写入每一个内存单元都至少需要一定的时间。
对于一个相同的输入I,S(N)=O(T(N))。
空间复杂性降低到一定程度时会大幅度增加时间复杂性,而时间复杂性的降低一般对空间复杂性不会有太大影响。
例:求两个n阶矩阵的乘积C=AB的算法及其时间复杂性。
定义矩阵A[ ][n],B[ ][n],C[ ][n]for i ←0 to n←频度:n+1for j ←0 to n ←频度:n(n+1)C[i][j] = 0;←频度:n2for k ←0 to n←频度:n2(n+1)C[i][j] = C[i][j] + A[i][k] * B[k][j]; ←频度:n3end forend forEnd for时间复杂性T(n) = n+1+n (n+1) + n2 + n2(n+1) + n3 = 2n3+3n2+2n+1上界的阶越低则评估越有价值。
下界的阶越高,则评估精度越高,也就越有价值。
T(n)大概有三种计算方法:计算迭代次数(循环结构的执行次数)计算基本运算的频度使用递归方程(多用于递归算法)第二章1.并非所有递归函数都能找到其非递归的定义。
2.分治法的设计思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。
原理:递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010计算机算法分析与设计任务书算法分析与设计任务书1 课程设计的目的《算法分析与设计》是信息与计算科学专业集中实践性环节之一,是学习完《算法分析与设计》课程后进行的一次全面的综合练习。
其目的是:(1)要达到理论与实际应用相结合,使学生能够学会常用的几种算法思想以及对算法进行分析,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。
(2)在实践中认识为什么要学习算法分析与设计,掌握算法的设计思想与程序设计语言之间的关系,是前面所学知识的综合和回顾。
2 课程设计的基本要求(1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;(5)设计的题目要求达到一定工作量,并具有一定的深度和难度;(6)编写出课程设计说明书。
3 课程设计内容及安排(1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?(2)逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;(3)详细设计:定义相应的存储结构并写出各函数的伪代码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作进行进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;(4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。
同时加入一些注解和断言,使程序中逻辑概念清楚;(5)程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。
能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;(6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。
算法的时间、空间复杂性分析;(7)撰写课程设计报告。
4 课程设计报告的内容设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。
设计报告以规定格式的电子文档书写、打印并装订,排版及图、表要清楚、工整,内容及要求详见“课程设计报告规范”,其中“3. 课程设计报告内容”中一般应包括以下内容:4.1 需求分析以无歧义陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能;(4) 测试数据:包括正确的输入和输出结果,含有错误的输入和输出结果。
4.2 概要设计说明本程序中用到的所有抽象数据类型的定义、主控程序的流程以及各程序模块之间的层次(调用)关系。
4.3 详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪代码算法;对主程序和其他模块也都需要写出伪代码算法(伪代码算法达到的详细程度建议为:按照伪代码算法可以在计算机键盘直接输入高级程序设计语言程序));可采用流程图、N–S 图或PAD 图进行描述,画出函数和过程的调用关系图。
4.4 调试分析内容包括:调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;4.5 测试结果列出你的测试结果,包括输入和输出。
这里的测试数据应该完整和严格,最好多于需求分析中所列。
4.6 用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。
5 课程设计考核方法及成绩评定课程设计结束时,要求学生写出课程设计报告(可不附源程序),可运行的软件系统(包括源程序)。
课程设计成绩分两部分,设计报告及软件系统占70%,集中上机占30%。
6 进度安排整体设计和详细设计 2天编写代码 2天调试和测试 2天课程设计报告书写 1天演示软件和答辩另行安排7 课程设计题目7.1 棋盘覆盖【间题描述】在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。
在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。
【基本要求】(1)输入k以及特殊方格所在的行号dr和特殊方格的列号dc。
(2)要求输出每一步用什么形态L型骨牌覆盖,覆盖后得到的棋盘图形。
(3)如果输出的结果只是用矩阵表示则为良好,用图形表示则为优。
【测试数据】【实现提示】使用分治策略,把棋盘划分成4个小棋盘,然后用一个L型骨牌覆盖将这4个小棋盘变为都具有特殊方格的棋盘。
7.2 Hanoi塔问题(*)【问题描述】设a,b,c是三个塔座。
开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠放在一起,各圆盘从小到大编号为1,2,…,n,要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。
在移动圆盘时应遵守以下移动规则:规则(1)每次只能移动一个圆盘;规则(2)任何时刻都部允许将较大的圆盘压在较小的圆盘之上;规则(3)在满足移动规则(1)和(2)的前提下,可将圆盘移至a,b,c 中任一塔座上。
【基本要求】(1)设计出Hannoi 塔游戏,供用户玩;(2)提供正确的搬运方法。
【实现说明】正确的搬运方法使用递归方法实现。
【测试数据】7.3 矩阵连乘问题【问题描述】给定n 个矩阵{12,,...,nA A A },其中i A 和1i A 是可乘的,i =1,2,…,n-1。
考察这n 个矩阵的连乘积12,...,n A A A ,通过加括号方式,找出矩阵乘积所需的最少计算量的方法。
【基本要求】 输入每个矩阵的行和列,要求输出最少计算量的矩阵乘积方法,如1234((()))A A A A 。
【实现说明】使用动态规划方法。
7.4 多边形游戏(*)【问题描述】多边形游戏是一个单人玩的游戏,开始时有一个由n 个顶点构成的多边形。
每个顶点被赋予一个整数值,每条边被赋予一个运算符“+”或“*”。
所有边依次用整数从1到n 编号。
游戏第1步,将一条边删除。
随后n-1步按以下方式操作:选择一条边E 及由E 连接着的2个顶点v1和v2;用一个新的顶点取代边E 及用E 连接着的2个顶点v1和v2,将由顶点v1和v2的整数值通过边E 上的运算得到的结果赋予新顶点。
最后,所有边都被删除,游戏结束。
游戏的得分就是所剩顶点上的整数值。
【基本要求】设计该游戏供用户玩;对于给定的多边形,给出最高得分计算。
【实现说明】使用动态规划方法。
7.5 0-1背包问题【问题描述】给定n 种物品和一背包。
物品i 的重量是i w ,其价值为i v ,背包的容量为c 。
问应如何选择装入背包种的物品,使得装入背包种物品的总价值最大。
【基本要求】使用动态规划、回溯法以及分支界限三种方法实现。
【测试数据】【实现提示】7.6 排序方法【问题描述】给定n 个元素,要求对这n 个元素进行排序。
【基本要求】使用多种排序方法,越多越好;比较每种排序方法的时间复杂度和空间复杂度。
【测试数据】【实现提示】7.7 哈夫曼编码译码器【问题描述】设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt)。
【基本要求】(1)输入一个待压缩的英文文本文件,统计文本文件中各字符的个数作为权值,生成哈夫曼树;(2)将文本文件利用哈夫曼树进行编码,生成压缩文件(后缀名cod)(3)输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码。
【实现说明】(1)在构造哈夫曼树时,可以利用不同的线性表存放二叉树:用顺序表、单链表、循环单链表、双向链表、循环双链表;(2)在构造哈夫曼树时,可以利用优先队列存放二叉树:顺序队列、链队列(可以是单链表、双链表等,还可以用静态结构去实现),可以分别在入队列或出队列时实现优先级;(3)二叉树本身也可以用静态数组模拟;(4)使用贪心算法7.8 迷宫问题(*)【问题描述】设计一个迷宫并给出正确走法。
如:001111111111111100011111111111101100001111111100011100000111111011*********111000000001001111000000011100其中0表示可以走,1表示不能走,每一步只能向上下左右移动。
【基本要求】(1)给出迷宫的正确走法,包括没有解的情况;(2)要求界面友好。
【测试数据】【实现提示】使用回溯的方法。
7.9 继续邮资问题【问题描述】假设某国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。
连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上贴出从邮资1开始,增量为1的最大连续邮资区间。
【基本要求】输入任意的m和n都能设计出最佳的方案,并给出连续邮资区间。
【实现说明】【测试数据】7.10 图的m着色问题【问题描述】给定一个地图,要求给出该地图的最少着色方案【基本要求】(1)把地图以及最少着色的方案显示出来则为良好。
(2)有友好的界面则为优【实现说明】7.11 猜数字游戏(*)【问题描述】孩子想1个由4种颜色组成的序列(4种颜色不一定完全不同)。
每种颜色只能是6种颜色之一。
方便起见,我们用数字1到6表示6种颜色。
计算机必须根据孩子的回答找出孩子所想的颜色序列。
计算机在屏幕上显示一个序列,孩子用键盘回答以下两个问题:猜对的颜色中位置不对的有几个?猜对的颜色中位置对的有几个?【基本要求】编程使至多6次问答后猜出序列,如果办不到,至多10次问答后猜出序列。
【实现说明】【测试数据】如孩子想的是4655计算机猜想颜色对位置错的数目颜色和位置都对的数目1234 1 05156 2 16165 1 15625 1 25653 1 24655 0 47.12 大整数计算器【问题描述】设计一个计算器实现两个任意长得整数的加、减、乘、除。
【基本要求】设计一个实现任意长的整数进行四则运算的演示程序,要求输入任意长的整数进行四则运算,都能得到精确的结果。
【实现说明】7.13 查找搜索技术【问题描述】给定任意的数组,对于给定的数,查找是否在数组中,如果在,则返回给定数在数组的位置,不在则返回不在信息。