《太原理工大学算法设计与分析实验报告》由会员分享,可在线阅读,更多相关《太原理工大学算法设计与分析实验报告(12页珍藏版)》请在人人文库网上搜索。
1、本科实验报告课程名称: 算法设计与分析 实验项目:分治法合并排序 贪心法作业调度 动态规划法求多段图问题 回溯法求n皇后问题 实验地点: 致远楼B503 专业班级: 学号: 学生姓名: 指导教师: 2017年 3月18日实验1 分治法合并排序一、实验目的1. 掌握合并排序的基本思想2. 掌握合并排序的实现方法3. 学会分析算法的时间复杂度4. 学会用分治法解决实际问题二、实验内容随机产生一个整型数组,然后用合并排序将该数组做升序排列,要求输出排序前和排序后的数组。三、实验环境Window10;惠普笔记本;Dev cpp4、 算法描述和程序代码#include#include#include#i。
2、ncludeusing namespace std;#define random(x)(rand()%x);int a10;/合并排序函数。void Merge(int left, int mid, int right) int t11;int i = left, j = mid + 1, k = 0;while (i using namespace std;const int Work8 = 45,30,28,25,23,15,10,1 ;/所有作业按收益从大到小排序const int maxTime8 = 4,7,3,2,4,6,7,5 ;class HomeWork private:in。
3、t res8;bool flag8;int maxReap;public:void dealWith() /遍历所有作业:int i;for (i = 0; i= 0; j-)if (!flagj) resj = Worki;flagj = true;break;cout 2个不相交的子集Vi,1int V5050;int a50,b20;int static k,n,m;void createGraph()int i,j,t,s;printf(请输入结点数:);scanf(%d,&n);for(i=0; i=2; r-)for(i=ar+1; i1; r-) /向前逐层求解for(j=ar-。
4、1+1; j%d,bi);return 0;五、实验结果截图6、 实验总结这个实验让我从中懂得了动态规划算法的核心,更加收敛的运用动态规划算法秋节各类问题,但动态规划算法最重要的还是方程的选择,这个在实际运用中相当重要。实验4回溯法求n皇后问题一、实验目的1. 掌握回溯算法的基本思想2. 通过n皇后问题求解熟悉回溯法3. 使用蒙特卡洛方法分析算法的复杂度二、实验内容要求在一个8*8的棋盘上放置8个皇后,使得它们彼此不受“攻击”。两个皇后位于棋盘上的同一行、同一列或同一对角线上,则称它们在互相攻击。现在要找出使得棋盘上8个皇后互不攻击的布局。三、实验环境Window10;惠普笔记本;Dev cp。
5、p四、算法描述和程序代码#include#include using namespace std;#define N 8int res1008;int countRes = 0;bool Place(int k,int i,int *x)for(int j = 0;jshow;if(show = Y | show = y)for(int n = 0;ncountRes;n+)cout第n+1个解:endl;for(int i = 0;iN;i+)for(int j = 0;jN;j+)if(resni = j)coutQt;elsecout*t;coutendl;return 0;五、实验结果截图六、实验总结在n皇后问题中可以看出回溯算法求出的是这个问题的所有解,而不是单纯地求出了这个问题所产生的最优解,这样对于我们在实际运用方面十分实用。12 / 12。