版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科实验报告课程名称: 算法设计与分析 实验项目: 算法设计与分析实验 实验地点: 致远楼403 专业班级: 学号: 学生姓名: 指导教师: 2017年 3 月 28日实验一 分治法合并排序一、实验目的 1.掌握合并排序的基本思想 2.掌握合并排序的实现方法 3.学会分析算法的时间复杂度 4.学会用分治法解决实际问题 二、实验内容随机产生一个整型数组,然后用合并排序将该数组做升序排列,要求输出排序前和排序后的数组。 三、实验环境程序设计语言:c+编程工具:microsoft visual studio 2013 四、程序代码#include stdafx.h#include#include#i
2、ncludeSortTestHelper.husing namespace std;templatevoid mergeSort(T arr,int n)_mergeSort(arr,0,n-1);templatevoid _mergeSort(T arr,int l,int r)if(l=r)return;int mid=(l+r)/2;_mergeSort(arr,l,mid);_mergeSort(arr,mid+1,r);if(arrmidarrmid+1)_merge(arr,l,mid,r);templatevoid _merge(T arr,int l,int mid,int r
3、)T *aux=new Tr-l+1;for(int i=l;i=r;i+)auxi-l=arri;int i=l,j=mid+1;for(int k=l;kmid)arrk=auxj-l;j+;else if(jr)arrk=auxi-l;i+;else if(auxi-lauxj-l)arrk=auxi-l;i+;elsearrk=auxj-l;j+;delete aux;int _tmain(int argc, _TCHAR* argv)int n=10;int *arr=SortTestHelper:generateRandomArray(n,0,n);cout未排序的数组为:;for
4、(int j=0;j10;j+) coutarrj ;coutendl;mergeSort(arr,10);cout经过排序的数组为:;for(int i=0;i9;i+)coutarri ;coutendl;#includestdafx.h#include#include#includeusing namespace std;namespace SortTestHelperint *generateRandomArray(int n,int randL,int randR)assert(randL=randR);int *arr=new intn;for(int i=0;in;i+)arri
5、=rand()%(randR-randL+1)+randL;return arr;五、实验结果截图六、实验总结一定要先找到递归函数式后,设计递归程序实验二 贪心法多机调度一、 实验目的 1. 掌握贪心算法的基本思想 2.掌握贪心算法的典型问题求解 3.进一步多机调度的基本思想和算法设计方法 4.学会用贪心法分析和解决实际问题二、 实验内容设计贪心算法实现作业调度,要求按作业调度顺序输出作业序列。如已知n=8,效益p=(35,30,25,20,15,10,5,1),时间期限d=(4,2,4,5,6,4,5,7),求该条件下的最大效益。三、 实验环境程序设计语言:c+编程工具:microsoft
6、visual studio 2013四、 方法描述和程序代码#include stdafx.h#includeiostreamusing namespace std;int _tmain(int argc, _TCHAR* argv)double work99,time99,t,w;double temp99,usetemp99,a,s=0;int A99;cout作业数为(x99):w;cout作业收益为:endl;for(int i=0;iworki;cout作业收益:endl;for(int i=0;iw;i+)cout worki ;coutendl;cout每个作业的时限为:endl
7、;for(int i=0;itimei;cout作业时限:endl;for(int i=0;iw;i+)cout timei ;coutendl;cout总作业时限为:t;/初始化录入数据for(int i=0;iw;i+)tempi=worki/timei;usetempi=tempi;/平均时间盈利cout作业平均时间盈利排序为:endl;for(int m=0;mw;m+)a=temp0,Am=0; for(int i=0;iw;i+) if(atempi) Am=i;a=tempi; tempAm=0;cout Am ; /作业平均时间盈利排序coutendl;cout可进行的作业有:
8、endl;for(int i=0;iw;i+)double x=s+timeAi;if(xt)s=s+timeAi;cout Ai2个不相交的子集Vi,1i=k,其中V1和Vk分别只有一个顶点s(源)和一个顶点t(汇)。图中所有边的始点和终点都在相邻的两个子集Vi和Vi+1中。求一条s到t的最短路线。参考讲义p136图5-24中的多段图,试选择使用向前递推算法或向后递推算法求解多段图问题。三、 实验环境程序设计语言:c+编程工具:microsoft visual studio 2013 四、 算法描述和程序代码#include stdafx.h#includeusing namespace s
9、td;#define INFTY 1000struct Tint adjVex;int w;struct T *nextArc;class Graphprivate:T *a;int *p;int n;public:Graph(int n) this-n = n; p = new intn; a = new T*n; for (int i = 0; i n; i+)ai = new T; void GetT(int *m);int fp(int k);void print(int k);void Graph:print(int k)int c = fp(k);cout 最短路径权值: c en
10、dl;cout 最短路径: endl;for (int i = 0; i k - 1; i+)cout pi pi + 1 = 0; j-)int min = INFTY;for (T *r = aj-nextArc; r;r=r-nextArc)int v = r-adjVex;if (r-w + costv w + costv;q = v;costj = min;dj = q;p0 = 0; pk - 1 = n - 1; c = cost0;for (int j = 1; j = k - 2; j+)pj = dpj - 1;deletecost;deleted;return c;voi
11、d Graph:GetT(int *m)T *x,*p,*q;for (int i = 0; i n; i+)p = q = ai;for (int j = 0; j adjVex = j;x-w = mij;p-nextArc = x;p = p-nextArc;p-nextArc = NULL;int _tmain(int argc, _TCHAR* argv)int *m;Graph q(12);m =new int* 12;for (int i = 0; i 12; i+)mi = new int12;cout 图的各点见的权值为: endl;for (int i = 0; i 12;
12、i+)for (int j = 0; j mij;q.GetT(m);int k;cout k;q.print(k);for (int i = 0; i 12; i+)delete mi;delete m;return 0;五、 实验结果截图六、 实验总结动态规划法应用于子问题重叠的情况,与分治法类似。实验四 回溯法求n皇后问题一、 实验目的掌握回溯算法的基本思想通过n皇后问题求解熟悉回溯法使用蒙特卡洛方法分析算法的复杂度二、 实验内容要求在一个8*8的棋盘上放置8个皇后,使得它们彼此不受“攻击”。两个皇后位于棋盘上的同一行、同一列或同一对角线上,则称它们在互相攻击。现在要找出使得棋盘上8个皇
13、后互不攻击的布局。三、 实验环境程序设计语言:c+编程工具:microsoft visual studio 2013四、 算法描述和程序代码 #include stdafx.h#include #define N 4int columnN+1; int rup2*N+1; int lup2*N+1; int queenN+1 = 0;int num; / 解答编号确定 void backtrack(int); int _tmain(int argc, _TCHAR* argv) int i; num = 0; for(i = 1; i = N; i+) columni = 1; for(i = 1; i = 2*N; i+) rupi = lupi = 1; backtrack(1); return 0;/ 递回求解void showAnswer() int x, y; printf(n解答 %dn, +num); for(y = 1; y = N; y+) for(x = 1; x N) showAnswer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/Z 160-2025电气简图用图形符号IEC 60617标准化设计指南
- 2026ios面试题库及答案
- 2026js的面试题及答案
- 2026年事业单位考试(医疗卫生类E类)试题及答案
- 2026年离职面谈实操专员试题及答案
- 高中物理《基于心电图的波动与信息》教学设计
- 初中英语八年级上册 Unit 2 School Life 全景式单元整体教学设计
- 初中九年级物理(科学):电功与电功率的计算建模与决策教学设计
- 小学五年级劳动与技术《清风徐来:电风扇的设计与制作》教案
- 2026年贵州高考语文阅读专项试题及答案
- 2026年河北省中考物理试卷(含答案及解析)
- 2026届贵州省遵义市凤冈县四年级数学下学期期末综合测试试题含解析
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
- NB/T 10731-2021煤矿井下防水密闭墙设计施工及验收规范
- 财务基础知识培训和律师业务中的财务知识运用
- GB/T 28799.2-2020冷热水用耐热聚乙烯(PE-RT)管道系统第2部分:管材
- GB/T 26832-2011无损检测仪器钢丝绳电磁检测仪技术条件
- 超市进场收费协议书
- 检查包装区的工作流程课件
- 中国CDM能力建设项目培训讲义课件
- 南京大学人工智能学院博士生培养方案
评论
0/150
提交评论