资源简介
1)设计的主菜单可以是图形模式的,也可以是控制台模式的。以控制台为例,主菜单大致如下:
-------------------------
《算法设计与分析》实验
-------------------------
算法分析基础——Fibonacci序列问题
分治法在数值问题中的应用——矩阵相乘问题
减治法在组合问题中的应用——8枚硬币问题
变治法在排序问题中的应用——堆排序问题
动态规划法在图问题中的应用——全源最短路径问题
99. 退出本实验
-------------------------
请输入您所要执行的操作(1,2,3,4,5,99):
2)点击操作后进入相应的实验项目或是相应项目的下一级菜单;
3)可以反复执行,直到退出实验。
-------------------------
《算法设计与分析》实验
-------------------------
算法分析基础——Fibonacci序列问题
分治法在数值问题中的应用——矩阵相乘问题
减治法在组合问题中的应用——8枚硬币问题
变治法在排序问题中的应用——堆排序问题
动态规划法在图问题中的应用——全源最短路径问题
99. 退出本实验
-------------------------
请输入您所要执行的操作(1,2,3,4,5,99):
2)点击操作后进入相应的实验项目或是相应项目的下一级菜单;
3)可以反复执行,直到退出实验。
代码片段和文件信息
#include
#include
#include
#include
#define N 200
#define MaxVertices 100 //假设包含100个顶点
#define MaxWeight 32767 //不邻接时为32767,但输出时用 “∞“
#define MAXV 10
#define INF 32767
using namespace std;
typedef struct{ //包含权的邻接矩阵的的定义
int Vertices[MaxVertices]; //顶点信息的数组
int Edge[MaxVertices][MaxVertices]; //边的权信息的数组
int numV; //当前的顶点数
int numE; //当前的边数
}AdjMatrix;
typedef struct array
{
int *a;
int n;
}Array;
void menu()//主菜单
{
//标题头
cout<<“ ----------------------------------------------------- “< cout<<“ 《算法设计与分析》实验“< cout<<“ -----------------------------------------------------“< //选择菜单
cout<<“ 1.算法分析基础——Fibonacci序列问题“ < cout<<“ 2.分治法在数值问题中的应用——矩阵相乘问题 “< cout<<“ 3.减治法在数值问题中的应用——8枚硬币问题 “< cout<<“ 4.变治法在数值问题中的应用——堆排序问题 “< cout<<“ 5.动态规划法在图问题中的应用——全源最短路径问题 “< cout<<“ 99.退出本实验“ < cout<<“ -----------------------------------------------------“< cout<<“ 请输入您所要执行的操作(1234599);“<
}
//Fibonacci算法实现阶段
//Fibonacci数列
int Fi(int i)
{
if(i<=1)
return i;
else
return Fi(i-1)+Fi(i-2);
}
void Fn()
{
int i=0j=0;
do
{
j=Fi(i);
if(j>=0)
printf(“%d “j);
++i;
}while(j>=0);
printf(“\n计算机所能计算的最大整数是第%d个fibonacci整数。\n“i-1);
}
void Fib()
{
int i=1f[3]={01};
printf(“%d \n“f[0]);
do
{
printf(“%d \n“f[1]);
f[2]=f[1]+f[0];
f[0]=f[1];
f[1]=f[2];
i++;
}while(f[1]>=f[0]);
printf(“\n\t计算机所能表示的最大fibonacci整数是第%d个fibonacci整数。\n“i);
}
void fibonacci()
{
double start;
start=clock();
Fib();
printf(“\t迭代所用时间是%lf \n\n“clock()-start);
start=clock();
Fn();
printf(“\t递归所用时间是%lf \n\n“clock()-start);
}
//矩阵相乘问题求解
void PrintIn(Array AArray B)
{
int n=A.n;
int ij;
printf(“请输入A数据:\n“);
for(i=0;i for(j=0;j cin>>A.a[i*n+j];
printf(“请输入B数据:\n“);
for(i=0;i for(j=0;j cin>>B.a[i*n+j];
}
void RandomIn(Array AArray B)
{
int n=A.n;
srand((unsigned)time(NULL));
int ij;
for(i=0;i for(j=0;j A.a[i*n+j]=rand()%10;
for(i=0;i for(j=0;j B.a[i*n+j]=rand()%10;
}
void PrintOut(Array A)
{
int n=A.n;
int ij;
for(i=0;i { for(j=0;j cout< printf(“\n“);
}
}
void divide(Array dArray d00Array d01Array d10Array d11) /*分割矩阵*/
{
int n=d00.n;
int ij;
for(i=0;i {
for(j=0;j {
d00.a[n*i+j]=d.a[2*n*i+j];
d01.a[n*i+j]=d.a[2*n*i+n+j];
d10.a[n*i+j]=d.a[2*n*n+2*n*i+j];
d11.a[n*i+j]=d.a[2*n*n+2*n*i+n+j];
}
}
}
Array merge(Array d00Array d01Array d10Array d11)
{
int n=d00.n;
int ij;
Array d;
d.a=(int *)malloc(sizeof(int)* (4*n*n));
for(i=0;i {
for(j=0;j
- 上一篇:编译原理大作业递归下降法
- 下一篇:c++页面置换算法模拟程序-
相关资源
- 实验报告:数据结构长整数四则运算
- 《Data Structures and Algorithm Analysis in C
- 操作系统存储管理实验报告c/c++
- 编译原理实验报告+代码+使用说明
- c++版学生成绩管理系统实验报告及源
- 语法分析c语言实现程序代码+实验报告
- plo编译器 c语言 含测试 以及实验报告
- Data Structures and Algorithm Analysis in C++
- 数据结构与算法分析C++语言描述第四
- 中值滤波_均值滤波c语言实现_工程文
- 直方图均衡化_c语言实现_源代码+实验
- SVM分类算法实验报告+C语言程序 加强
- 英文原版数据结构与算法分析——C语
- 计算机网络课程设计之Ping程序含C++原
- C++网络嗅探器源代码及实验报告
- 数据结构与算法分析c++第三版课后习
- 地图着色mfc
- 数据结构与算法分析 C++语言描述 第二
- 银行家算法c语言实现+实验报告
- 基于AT89C51的8*8点阵字符显示的实验报
- 数据结构与算法分析(C++版)张铭译
- 基于winPcap开发嗅探器c++
- 数据结构与算法分析:C语言描述(原书
- 数据结构与算法分析C++版 Clifford A.
- C语言实现最低松弛度优先算法源代码
- 北邮SQL实验四实验报告
- 《数据结构与算法分析:C语言描述》原
- 数据结构与算法分析--C语言描述(M
- 数据结构与算法分析C++语言描述第二
- 安徽大学操作系统实验八基于扫描的
评论
共有 条评论