算法设计与分析实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析课程实验项目目录

学生姓名:学号:

*实验项目类型:演示性、验证性、综合性、设计性实验。

*此表由学生按顺序填写。

本科实验报告专用纸

课程名称算法设计与分析成绩评定

实验项目名称蛮力法指导教师

实验项目编号 201 实验项目类型设计实验地点机房

学生姓名学号

学院信息科学技术学院数学系信息与计算科学专业级

实验时间 2012年 3月 1 日~6月30日温度24℃

1.实验目的和要求:

熟悉蛮力法的设计思想。

2.实验原理和主要内容:

实验原理:蛮力法常直接基于问题的描述和所涉及的概念解决问题。

实验内容:以下题目任选其一

1).为蛮力字符串匹配写一段可视化程序。

2).写一个程序,实现凸包问题的蛮力算法。

3).最著名的算式谜题是由大名鼎鼎的英国谜人给出的: S END

+MORE MONEY

. 这

里有两个前提假设:第一,字母和十进制数字之间一一对应,也就是每个字母只代表一个数字,而且不同的字母代表不同的数字;第二,数字0不出现在任何数的最左边。求解一个字母算术意味着找到每个字母代表的是哪个数字。请注意,解可能并不是唯一的,不同人的解可能并不相同。

3.实验结果及分析:

(将程序和实验结果粘贴,程序能够注释清楚更好。)

本科实验报告专用纸(附页)

该算法程序代码如下:

#include "" #include ""

int main(int argc, char* argv[]) {

int x[100],y[100];

int a,b,c,i,j,k,l,m,n=0,p,t1[100],num; int xsat[100],ysat[100];

printf("请输入点的个数:\n"); scanf("%d",&num); getchar();

clock_t start,end; start=clock();

printf("请输入各点坐标:\n");

for(l=0;l

一批输入样本。

2).Tromino 谜题:Tromino 是一个由棋盘上的三个邻接方块组成的L 形瓦片。我们的问题是,如何用Tromino 覆盖一个缺少了一个方块(可以在棋盘上的任何位置),的22n n 棋盘。除了这个缺失的方块,Tromino 应该覆盖棋盘上的所有方块,而且不能有重叠。为此问题设计一个分治算法。

1. 实验结果及分析:

(将程序和实验结果粘贴,程序能够注释清楚更好。)

本科实验报告专用纸(附页)

该算法程序代码如下:

#include ""

void swap(int *x,int *y) {

int t;t=*x;*x=*y;*y=t; }

int partition(int A[100],int l,int r)

{

int p,i,j;

p=A[l];

i=l;j=r+1;

do{

do{

i=i+1;

if(i>j)

break;

}while(A[i]

do{

j=j-1;

if(j

break;

}while(A[j]>p);

swap(&A[i],&A[j]);

}while(i

swap(&A[i],&A[j]);24℃用深度或广度优先查找,设计一个程序,对于一个给定的图,它能够输出每一个连通分量的顶点,并且能输出图的回路,或者返回一个消息表明图是无环的。

2).设计一个程序实现两种拓扑排序算法:DFS算法和减一算法并做

一个实验来比较它们的运行时间。

3).编写程序实现选择问题,即求一个n个数列表的第k个最小元素。

1.实验结果及分析:

(将程序和实验结果粘贴,程序能够注释清楚更好。)

本科实验报告专用纸(附页)

算法程序代码如下:

#include""

int main()

{int QSort(int [],int,int);

int a[11];

int k;

printf("请输入一个11个数的数列:\n");

for(k=0;k<11;k++)

scanf("%d",&a[k]);

QSort(a,0,10); }

int QSort(int a[],int left,int right)

{ int i,j,temp,m=6;

i=left;

j=right;

temp=a[left];

if(left>right)

return 0;

while(i!=j)

{ while(a[j]>=temp && j>i)

j--;

if(j>i) a[i++]=a[j];

while(a[i]<=temp && j>i)i++;

本科实验报告专用纸(附页)

if(j>i)

a[j--]=a[i]; }

a[i]=temp;

if(i>m)

QSort(a,left,i-1); 24℃24℃求总金额等于n的硬币的最少个数,并输出每种硬币的找零数量。要求测试数据:硬币面额{d1,d2,…,dm} ={1,5,10,21,25},找零金额n=273。

1.实验结果及分析:

(将程序和实验结果粘贴,程序能够注释清楚更好。)

该算法程序如下:

#include <>

int main()

{

int d[3],i,n;

int ZL(int [],int);

printf("输入4种硬币面额:\n");

for(i=0;i<=3;i++)

本科实验报告专用纸(附页)

{scanf("%d",&d[i]);}

printf("输入要找零的金额:\n");

scanf("%d",&n);

ZL(d,n);

}

int ZL(int d[],int n)

{

int a,b,c,k;

a=n;

for(k=3;k>=0;k--)

{

c=a/d[k];

b=a-c*d[k];

a=b;

printf("面值为%d的找零个数为%d个\n",d[k],c);

}

}

程序运行结果如下:

2.教师评语、评分:

相关文档
最新文档