算法设计与分析实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一串匹配程序设计(2学时)
一、实验目的
(1). 熟练掌握串匹配的含义
(2). 掌握BF算法匹配的过程并编程实现
(3). 熟悉C++编译环境的基本操作
二、实验内容
给定两个字符串S和T,用BF算法,在主串S中查找字串T,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况(匹配成功或不成功)
(3)、写出完整的程序
四、实验结果
实验二排序问题程序设计(2学时)
一、实验目的
(1). 掌握选择排序和起泡排序的基本思想
(2). 掌握两种排序方法的具体实现过程
(3). 在掌握的基础上编程实现两种排序方法
二、实验内容
输入一个待排序的序列,分别用选择排序和起泡排序两种排序方法将其变换成有序的序列,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况(序列本身已是有序序列,序列不是有序序列)
(3)、写出完整程序
四、实验结果
实验三数字旋转方阵程序设计(2学时)
一、实验目的
(1). 掌握分治法的设计思想
(2). 掌握数字旋转方阵的具体实现过程
(3). 熟练掌握二维数组的使用方法
(4). 在掌握的基础上编程实现数字旋转方阵的实现过程
二、实验内容
给出一个初始数据,在此数据的基础上由外层向里层填写数据,完成一个数字旋转方阵,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况(方阵有一层,两层或更多层)
(3)、写出完整程序
四、实验结果
实验四排序中分治法的程序设计(2学时)
一、实验目的
(1). 掌握归并排序和快速排序的划分方法
(2). 掌握归并排序和快速排序的具体分治策略
(3). 在掌握的基础上编程两种排序方法的实现过程
二、实验内容
给出一个初始序列,分别用归并排序和快速排序两种分治法将所给序列变换为有序序列,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况(序列只有一个值或更多)
(3)、写出完整程序
四、实验结果
实验五汉诺塔问题的程序设计(2学时)
一、实验目的
(1). 掌握递归的有关概念
(2). 掌握汉诺塔问题的具体求解过程
(3). 在掌握的基础上编程实现汉诺塔的具体实现过程
二、实验内容
在A上有按大小排序好的n个金碟,借助B的帮助,将A上的碟子移动到C上,在移动的过程中要严格按照大小顺序,不能将碟子放在比它小的上面,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况
(3)、写出完整程序
四、实验结果
实验六查找中减治法的程序设计(2学时)
一、实验目的
(1). 掌握减治法的设计思想
(2). 掌握折半查找和二叉查找的思想及实现过程
(3). 在掌握的基础上编程实现两种查找方法的具体实现过程
二、实验内容
给出一个序列及要查找的值,分别用两种查找方法实现,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况(查找成功或失败)
(3)、写出完整程序
四、实验结果
实验七排序中减治法的程序设计(2学时)
一、实验目的
(1). 掌握堆的有关概念
(2). 掌握堆排序的基本思想和其算法的实现过程
(3). 熟练掌握筛选算法的实现过程
(4). 在掌握的基础上编程实现堆排序的具体实现过程
二、实验内容
给出一个记录序列,用堆排序的方法将其进行升序排列,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况
(3)、写出完整程序
四、实验结果
实验八淘汰赛冠军问题的程序设计(2学时)
一、实验目的
(1). 掌握简治法的设计思想
(2). 掌握淘汰赛冠军问题的具体实现过程
(3). 通过这个实例进一步掌握递归技术的运用
(4). 在掌握的基础上编程实现淘汰赛冠军问题的具体实现过程
二、实验内容
假设有n个选手进行竞技淘汰赛,最后决出冠军的选手,请设计竞技淘汰比赛的过程,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况
(3)、写出完整程序
四、实验结果
实验九 数塔问题的程序设计(2学时)
一、实验目的
(1). 掌握动态规划法的设计思想
(2). 掌握数塔问题的具体实现过程
(3). 熟练掌握二维数组的使用方法
(4). 在掌握的基础上编程实现数塔问题的具体实现过程
二、实验内容
给出一个数塔,从该数塔的顶层出发,在每一个节点可以选择向左走或向右走,一直走到该数塔的最底层,找出一条路径,使得路径上的数值和最大,输出最大数值及其路径,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况
(3)、写出完整程序
四、实验结果
实验十 多源点最短路径问题的程序设计(2学时)
一、实验目的
(1). 掌握动态规划法的设计思想
(2). 掌握多源点最短路径问题的具体实现过程
(3). 通过这个实例进一步掌握动态规划法的运用
(4). 在掌握的基础上编程实现多源点最短路径问题的具体实现过程
二、实验内容
给定带权有向图G=(V ,E ),对任意顶点()i j v v i j 和,求出顶点i j v v 到顶点的最短路径长度,输出结果,输出时要求有文字说明。请编写程序。
三、实验要求
(1)、熟悉C++编译环境的基本操作
(2)、考虑各种可能的情况
(3)、写出完整程序
四、实验结果