收藏 分享(赏)

算法实验报告(第二大班)(第2组).doc

上传人:dzzj200808 文档编号:2466280 上传时间:2018-09-17 格式:DOC 页数:31 大小:1.85MB
下载 相关 举报
算法实验报告(第二大班)(第2组).doc_第1页
第1页 / 共31页
算法实验报告(第二大班)(第2组).doc_第2页
第2页 / 共31页
算法实验报告(第二大班)(第2组).doc_第3页
第3页 / 共31页
算法实验报告(第二大班)(第2组).doc_第4页
第4页 / 共31页
算法实验报告(第二大班)(第2组).doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、院 系: 计算机科学学院 专 业: 计算机科学与技术 年 级: 09 级 课程名称: 算法设计与分析基础 班 号: 二大班 组 号: 2 组 指导教师: 邢光林 2011 年 5 月 5 日学号 姓名组员实验名称 算法实验整体框架的构建 实验室 9#205实验目的或要求实验目的: 熟悉实验环境 VC6.0 ; 复习 C、C+语言以及数据结构课程的相关知识,实现课程间的平滑过度;实验要求:1)设计的主菜单可以是图形模式的,也可以是控制台模式的。以控制台为例,主菜单大致如下:算法设计与分析实验1. 算法分析基础Fibonacci 序列问题2. 分治法在数值问题中的应用矩阵相乘问题3. 减治法在组合

2、问题中的应用8 枚硬币问题4. 变治法在排序问题中的应用堆排序问题99. 退出本实验请输入您所要执行的操作(1,2,3,4,99):2)点击操作后进入相应的实验项目或是相应项目的下一级菜单;3)可以反复执行,直到退出实验。实验原理(算法基本思想)用 switch,case 语句来控制选择,用 while 循环来控制程序何时退出,从而实现反复执行,直到退出实验为止程序代码#includeusing namespace std;void menu();int main()int choose;domenu();cinchoose;switch(choose)case 1: experiment1

3、();break;case 2:expriment2();break;case 3: experiment3();break;case 4: experiment4();break;case 99:break;default:coutexperiment n“;cout#include long fib(int n)if(n=0)return 0;if(n=1)return 1;if(n1)return fib(n-1)+fib(n-2);void Iteration(int n)long f1=0,f2=1,f3=0,i=1;while(in;Iteration(n);start=clock

4、();y=fib(n);finish=clock();RunTime=(long)(finish-start)/CLOCKS_PER_SEC);coutusing namespace std;void main()BruteForce BF;Strassen SF;cout#include #include using namespace std;BruteForce:BruteForce(void)BruteForce:BruteForce(void)void BruteForce:Input()coutN;N=8;float next;A=new ArryPtrN;B=new ArryPt

5、rN;C=new ArryPtrN;ifstream input;input.open(“input.txt“);if(input.fail()coutnext;for(int i=0;inext; for(int i=0;inext; void BruteForce:Output(float *P,int n)cout#include #include using namespace std;Strassen:Strassen()Strassen:Strassen(void)void Strassen:Input(BruteForce BRF)int FA=1;/如果N不是的指数则其余位补i

6、f(BRF.N=0)FA=0; while(FAusing namespace std;void fake_coin(int coins,int n,int l,int h);int main()int count,weight;int *num;coutcount;num=new intcount;coutweight;numi=weight;cout0)if(coinsl=coins0)cout#include #include using namespace std;typedef vector VE;void FixHeap(VEvoid HeapBottomUp(VEvoid Hea

7、pSort(VEint main()ifstream input;int next;VE A;input.open(“input.txt“);if(input.fail()coutnext;A.push_back(next);while(!input.eof()inputnext;A.push_back(next);A.pop_back();coutAchildIndex)childIndex=childIndex+1;if(value=AchildIndex)return;elseAvalueIndex=AchildIndex;valueIndex=childIndex;AvalueInde

8、x=value;void HeapBottomUp(VEi=1;i-)FixHeap(A,i,Ai,A.size()-1);void HeapSort(VEHeapBottomUp(A);for(int i=A.size()-1;i=2;i-)max=A1;A1=Ai;FixHeap(A,1,A1,i-1);Ai=max;cout,则 ci, j, 0 =边 的长度;若 i= j ,则 ci,j,0=0;如果 G 中不包含边 ,则 c (i, j, 0)= +。ci, j, n 则是从 i 到 j 的最短路径的长度。对于任意的 k0,通过分析可以得到:中间顶点不超过 k 的 i 到 j 的最短

9、路径有两种可能:该路径含或不含中间顶点 k。若不含,则该路径长度应为 ci, j, k-1,否则长度为 ci, k, k-1 +c k, j, k-1。ci, j, k可取两者中的最小值。状态转移方程:ci, j, k=minci, j, k-1, c i, k, k-1+c k, j, k-1,k0。这样,问题便具有了最优子结构性质,可以用动态规划方法来求解。程序代码#include using namespace std;const int INF = 100000;int len;int n=10,path1111,dist1111,map1111;void init()int i,j;for(i=1;iuv,u|v)if(distuv=INF) cout“No path“endl;elsecoutu ;output(u,v);coutendl;cout“路径长度为:n“distuv;return 0;实验结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报