向量分类问题和条形图轮廓问题.docx
《向量分类问题和条形图轮廓问题.docx》由会员分享,可在线阅读,更多相关《向量分类问题和条形图轮廓问题.docx(8页珍藏版)》请在冰豆网上搜索。
向量分类问题和条形图轮廓问题
实验报告
课程名称
数据结构与算法设计
实验课时
4
实验项目
实验二表
实验时间
2013-3-22
实验目的
1、表的基本运算
2、对算法的时间复杂性进行分析
实验环境
1、机房3
2、VisualC++6.0
实验内容(算法、程序、步骤和方法)
算法实验题2.1向量分类问题
实验任务:
给点m个n维向量,计算这m个n维向量可分为多少个类?
例如:
input.txtoutput.txt
643
3579
4375
3579
2146
3579
2146
源程序:
/*Note:
YourchoiceisCIDE*/
#include"stdio.h"
#include"malloc.h"
#include"string.h"
voidmain()
{
inti,j,m,n;
char**a;
charstr[10];
intsum=0;
printf("请输入向量的个数m和维数n:
");
scanf("%d%d\n",&m,&n);
a=(char**)malloc(m*sizeof(char*));
for(i=0;i{
a[i]=(char*)malloc(81*sizeof(char));
a[i][0]='\0';
for(j=0;j{
scanf("%s",str);
strcat(a[i],str);
strcat(a[i],",");
}
}
printf("\n");
for(i=0;i{
printf("%s\n",a[i]);
}
for(i=0;i{
for(j=i+1;j{
if(a[i]!
="")
{
if(strcmp(a[i],a[j])==0)
strcpy(a[j],"");
}
}
}
for(i=0;i{
if(!
(strcmp(a[i],"")==0))
sum++;
}
printf("向量分为%d类",sum);
}
算法实验题2.2条形图轮廓问题
实验任务:
对于给点的n个条形图,计算其条形图轮廓。
例如:
Input.txtoutput.txt
11151113139012716319182232313290
267
3139
12716
14325
191822
231329
24428
源程序:
/*Note:
YourchoiceisCIDE*/
#include
#include
#include
#defineLBound(-3000)
#defineUBound3000
#defineCod2Idx(x)((x)-LBound)
#defineSizeCod2Idx(UBound+1)
intmain(){
inths[Size],n;
inti,l,r,h,i0,i1;
memset(hs,0,sizeof(*hs)*Size);
printf("输入条形图的个数\n,分别表示左右竖线的x坐标,和高度\n");
scanf("%d",&n);
for(i0=UBound,i1=LBound;n>0;n--){
scanf("%d%d%d",&l,&h,&r);
if(lif(r>i1)i1=r;
for(i=l;iif(hs[Cod2Idx(i)]hs[Cod2Idx(i)]=h;
}
}
for(i=i0,h=0;iif(hs[Cod2Idx(i)]!
=h)
printf("%d%d",i,h=hs[Cod2Idx(i)]);
printf("%d%d\n",i,0);
return0;
}
数据记录
和计算
算法实验题2.1:
数据一:
数据二:
数据三:
数据四:
算法实验题2.2
数据一:
数据二:
数据三:
数据四:
结论
(结果)
以上数据结果,经过计算是正确的。
但是比较的大的数据这个程序的结果还是不知道是否正确。
向量分类问题:
该程序使用了很多for循环;
一开始我还是不懂这个是什么意思,才知道它指向的是指针;如果这个没有正确的理解,可能会导致程序错误。
改程序的时间复杂度只有O(
);
时间复杂度不会太大;改程序调用了字符串的库函数
这样就在实验中减轻了代码量;
条形图轮廓问题:
对于这个问题,改程序是参考了网上的一些资料。
看起来有点难度。
该程序是二维坐标来做的。
这些定义的一开始不怎么理解,后来才知道主要是在平面二维左边来确定图形。
时间复杂度不是很大0(n*r)。
小结
实践就是检验真理的唯一标准,说明实验非常重要,特别对于我们编程来说。
我觉得老师上课应该重点放在对问题的分析,因为我们对一个问题如果没有正确的认识,反而我们不能正确进行编程。
有时候可以帮我们补充一些c语言的知识,比如上课上次给我们讲了二进制移位,在大一学习c语言的时候,我对这个移位还不是很懂,根本就是不理解。
我也根据老师介绍的一些poj去做了一些题目,感觉一些题目看起来很简单,但是你真正提交的时候就是不能通过。
我个人觉得我们要从基础学习起,才来学习有挑战性的题目。
我也建议老师让我们做一些基础的实验题目,这样才能刺激我们对数据结构的学习乐趣。
指导老师评议
成绩评定:
指导教师签名:
实验报告说明
实验名称要用最简练的语言反映实验的内容。
如验证某程序、定律、算法,可写成“验证×××”;分析×××。
实验目的目的要明确,要抓住重点,可以从理论和实践两个方面考虑。
在理论上,验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。
一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。
实验环境实验用的软硬件环境(配置)。
实验内容(算法、程序、步骤和方法)这是实验报告极其重要的内容。
这部分要写明依据何种原理、定律算法、或操作方法进行实验,要写明经过哪几个步骤。
还应该画出流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。
数据记录和计算指从实验中测出的数据以及计算结果。
结论(结果)即根据实验过程中所见到的现象和测得的数据,作出结论。
小结 对本次实验的体会、思考和建议。
备注或说明可写上实验成功或失败的原因,实验后的心得体会、建议等。
注意:
∙实验报告将记入实验成绩;
∙每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。