




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程实验报告汇总作者: 日期:实验一 SL 的熟悉与使用实验名称实验一 STL 的熟悉与使用姓 名汪子成系院专业信息工程系班级计算机 15 1 班学号20152 7实验日期指导教师徐本柱成绩一、实验目的和要求1掌握 C+中 L 的容器类的使用 ;2.掌握 C+中 TL 的算法类的使用 .二、实验预习内容1预习 ICPC 讲义,大致了解 STL 的相关内容。2.了解 STL 中一些类 v ctor ist 类的使用方法3.了解泛型算法的使用三、实验项目摘要(1) 练习 vec or 和 ist 的使用。定义一个空的 ve tor,元素类型为 int,生成 10 个随机数插入到 vetor 中,用
2、迭代器遍历 vector 并输出其中的元素值。在 vec o 头部插入一个随机数, 用迭代器遍历 ve tor并输出其中的元素值。 用泛型算法 fid 查找某个随机数 ,如果找到便输出 , 否则将此数插入 ve or 尾部。用泛型算法 sort 将 vecto 排序,用迭代器遍历 e tor 并输 出其中的元素值。删除 ecto 尾部的元素 ,用迭代器遍历 vecto 并输出其中的元素值。将 ve tor 清空。定义一个 st,并重复上述实验 , 并注意观察结果。(2) 练习泛型算法的使用。定义一个 vector ,元素类型为 int,插入 1 个随机数,使用 o t 按升 序排序,输出每个元
3、素的值,再按降叙排序,输出每个元素的值。练习用 fin 查找元素。用 min 和 a 找出容器中的最小元素和最大元素 ,并输出。四、实验结果与分析 (源程序及相关说明 )1 练习 v t 和 i t 的使用:#incl #incud inlude nlud # ncl de ung na spe d; vectr myV;boo o tup(in v, in v2)e rn v1v2;it mi(it gc, chr * rgv)srand(ime(NUL ) ; for (int =0;i10;i+) my.pus_ ck( and(); tor it1; rt(myV bein(),myV
4、.en(),ortup);v ct r::i fo (it1myV.gi();1!=myV.end();it1 +)co t( *i 1)etw(6); oundl; nt min=m V ;?for (it1 myV gi( ) 1;it1!=m V.end();it1 +)i ( (*it1 )mn)m=(*i 1); cu最小元素为 min ax) ax=(*it1); out最大元素为 ax ndl; cutendl;in value=rand(); i1=find(myV.bei(), yV.en( ), alue);if( it1) =value)co 找到了这个随机数 e l ;
5、s cou 没有找到这个随机数 edl; mV.nset(myV.ed(),alu);cout插入尾部的随机数为 value endl;for (it1my.be( );it1 ! myV nd( ); t1+) cout(*i )setw(6);cout n e ; n =ra ();myV.isrt( V.bgin(), ); ot插入头部的随机数为 l;f (it1=myV egin( );it !m V.e d();it1+) c ut(*i ) sew(6); cotendl;mV.pp_bck ( );for (it1 my . e n();it1 !=m .e d();i +)
6、cout(*it ) setw(6); cou ndl;my.cle (); if(myV . mpty() cout Its empty! nd;ystem( SE); /prss any key o contiue. . r ur 0;2 练习泛型算法的使用 : #incue nclude usng namespa std; tpedef list lin ; int alue=1,6,7,8,9 ; void rnt(lin &l) int i;in:ite ato lit;for( it= .begi( );lit!=l.end( );li+) c t(*lit) ;c t v2; i
7、 m n() lin li 2;in2. sh_ ot(3); i .push_r nt(4);l 2.insert(in2beg (),vale,vaue+5); c utlin2 内的元素为 :;r t(li 2);li 2.rt(); cot排序后的 lin2 : ; print(lin2);in2.pushfrt(10);cout在 l t头部插入 1之后的结果 :; pi (lin2);lin2 r ove(6); u删除一个数后的 li 1:;rint(l n2) ; sste(AUSE)retun ;实验二 搜索算法的实现实验名称实验二 搜索算法的实现姓 名汪子成系院专业信息工程
8、系班级计算机 15-1 班学 号20152168实验日期指导教师徐本柱成绩、实验目的和要求1.掌握宽度优先搜索算法;2掌握深度优先搜索算法、实验预习内容1预习 IC 讲义中的搜索的内容 . 了解什么是深度优先搜索和广度优先搜索。、实验项目摘要1. 将书上的走迷宫代码上机运行并检验结果,并注意体会搜索的思想。2八皇后问题:在一个国际象棋棋盘上放八个皇后,使得任何两个皇后之间不相互攻击,求出 所有的布棋方法。上机运行并检验结果。 骑士游历问题 :在国际棋盘上使一个骑士遍历所有的格子一遍且仅一遍,对于任意给定的 顶点 ,输出一条符合上述要求的路径。 .倒水问题:给定 2 个没有刻度容器,对于任意给定
9、的容积,求出如何只用两个瓶装出升的水 ,如果可以 ,输出步骤 ,如果不可以,请输出 No Sou io四、实验结果与分析(源程序及相关说明)2,八皇后问题: #in lude #defi #deine 8 int N N,nN,HN N;int count=0;oid ri (nt,in);voi putArray(int N);main()?in x=0,y= ,i,j;?for(i= ; i=N 1; +)? or( ;j=N-1;j+)? hij=0 ;? ?tyi(x,y);?rintf (. .n);?rintf(共有%d种布局 n,92);? rn(0);v id try (in
10、x,int y) t i,j;?if( o n=0 x=0& =-1&hx =0) ? for(j=0; =&x+ =0&y+ = & + 0&y-j 0&x- = & + 0&x-j=0&y-j N 1&hx-jy- =0)?hx- y-j=x+ ;?hxy=-x- ;f(x=7) (i=0;i= -; i+)?forj0;j=N-1;j+)if(hi 0)?H j =1;?lseHi j= ;?co t=co ;?if(cnt=NUM) ?pri f(- -布局 %-n,count);? ot utAr a();fr(i=0;i= -1;i+)? for(j=0 ;j7)? ?for( =
11、0;N1;i+)? ? ? f(j0;j=)? tryit(x-1,nx-1 +1)?lsetrit(0,0);?else?t yit(x,y+1) ;?voi outptrray(nt )?nt ,j;?for (i=; i= ;i )?for(=;j=-1;j+)pritf( d ,hi j); ritf(n);?3. 骑士游历问题:# ncude in boar8 = 0; nt trve(in x, in )in k mo 18 = 2, -, 1, , 2, , -1, -2;i m ve28 = , , 2, 1, 1, -2, -2, -1 ; int n xti8 = ;int
12、 nextj8 = 0; in exit8 = 0; n i, , k, , ;in tmpi, tmpj; in cou t, min, tmp; = ; j ;boardij 1;for(m = 2; m = 4; ) o( 0; l ; l+) exi t l = ;l = 0; r(k = 0; k 8; k+) tmpi = i + ktm v1k; tmpj j + ktm ve2k;if(tmp 0 | tj 7 tmp 7) cotiue;if(boardtmimpj = 0) next t ; nextl = tmj;l+; count = ;f (c nt = 0) ret
13、urn 0; ele if(co n = ) in = 0; e se f r(l = 0; l cut; l +) for(k 0; 8; k+) tpi nxil ktmov 1k; tmpj e t l ktm ve2k; i( tmpi 0 | tp 7 | tmpj 7) conti e; f( ord mp tm j = 0)exissl ; tmp exists0;mi = 0; or( = ; l count; l+) i(e iss mp) mp = eis l;min l ;i ext min; j = extj min; boadi = ;re rn 1;int m n(
14、)n st tx, staty;int i, j;pit(输入起始点 :); scnf ( %d %d, &s a tx, &s ar y); f ( ravel(strtx, sta y) ) print (游历完成 );els printf( 游历失败! n );fo(i = 0; i 8; i+) for(j = 0; j 8; +) printf(%2 , ori);putcha (n);retrn ;实验三 计算几何算法的实现实验名称实验二 计算几何算法的实现姓 名汪子成 系院专业信息工程系班 级计算机 -1 班学 号2016758实验日期指导教师徐本柱成绩 一、实验目的和要求1.
15、理解线段的性质、叉积和有向面积。2. 掌握寻找凸包的算法。3. 综合运用计算几何和搜索中的知识求解有关问题。、实验预习内容1预习 IC 讲义,大致了解计算几何算法的相关内容。.了解实现该算法的中一些使用方法。.会使用该算法解决实际问题。、实验项目摘要 . 将讲义第三章第三节中的凸包代码上机运行并检验结果。2. 完成讲义第三章的课后习题 ,上机运行并检验结果。3. 思考 :判线段相交时, 如果有个线段的端点在另一条线段上, 注意可能与另一条线段上的端点 重合 ,思考这样的情况怎么办。 . 房间最短路问题: 给顶一个内含阻碍墙的房间 ,求解出一条从起点到终点的最最短路径。 房 间的边界固定在 =0
16、,x 0,y0 和 =10 。起点和重点固定在 (0,5)和(10,5)。房间里还有 0 到 18 个墙 , 每个墙有两个门。输入给定的墙的个数,每个墙的 位置和两个门的 坐标区间 ,输出最短路的长度。下图是个例子 :四、实验结果与分析 (源程序及相关说明 ).思考:用跨立方法。线段相交满足且只需满足如下两个条件就可以了: 两条线段相互跨立 ; 一条线段的一个端点在另一条线段上。 如果两线段相交, 则两线段必然相互跨立对方。 若 1p2 跨立 p3p4 ,则矢量 ( p p3 ) 和( p2 p )位于矢量( p p3 )的两 侧,即( p1 3) ( 4- 3 )* ( 2 p3 ) ( p
17、 p ) 0。 当( p1 p ) ( p4p ) = 0 时,说明( p3 ) 和 ( p4 p3 )共线,但是因为已经通过快速排斥试验 ,所以 p 一定在线段 p3p4上 ;同理,( p4 3 ) ( 3 ) = 0 说明 一定在 p3p4上。所以判断 p12跨立 Q1Q2 的依据是 :( 1 p ) ( p4 3 ) * ( 4 p3 ) ( p23 ) = 0。 同理判断 Q1Q2 跨立 P1P2的依据是:( p3 1 ) ( p2 - p ) * ( p - 1 ) ( p4 - p1 ) = 0。代码中函数 bl egment_intersec( )用于判断 p1、p2 构成 的线
18、段和 p、4 构成的线段是否相交。可以看出共五种情况两线段是相交的 ,反之就输 出“ Th w re o inte ected!”4房间最短路问题 :#n ude#inclu e#includ#includeusing amspa e td;t eef pa r ONT;ouble ir ci n(PI T p,OIT p1,OINT 2)POT v1,v2;v.firstp2.fist-p1.f st; v1.second=p2 on-p1. irst;v2.firt=p1.irst-p.fi t;v2.condp1.s ondp.second;r tu 1.fs*v2 ecnd-v1.se
19、c nd*v2.seco d;bol n_sgmet(PI T p,POIT p1,POI 2)doub e mi_x=1.fis2.frst?p1.fit:p2.firt; double miny= .secndp2.s cnd?p second:p2 seond;if(pfst=nx&p.irt min d ax_)re rn tru;lsere rn fals;P INT tartoin ;ool sortByPo orngle(c nst POINT &p1, onst POIN &p2 ) do ble =diecton(sta Poit,p1,p2);if ( d 0)ret fa
20、 e;i( d=0& emen(starPint,p1,p2)rturn true; f(d= =0 &on egen(2,startPoint,p) ) etur tre; return false;vo fd_cnx_hul(vecto&pon)PON 0=point0 ; t =0;for(int i 0;ipo .size(); +)f( oin seconp cond| pontiscnd=p.scnd&pnti irsp0.first)p0 pointi ;=; ointeae(p ntbegn()+k); pit. s rt(pont.begin(), p) ; e trco h
21、ull;doc vex_h l.p _back(point ); strtPoit= n0 ;oi .erase(poi tbei();so( point.bein(),poin e( ),sotByoorAngle); f(point=onx_hull0)br ;pont.puh_bac (cone_hu convex_ull.sze()-); wh e(1);fo(in j 0;jconve _ ll sz();+)coutcon _h ll j.fir t onex_hll j.ecn dl; in main() vecor pv; oube x,;int i;cout请输入 10 个点
22、: enl; for (i= ; i=10;i+) out o.ix y;pv. u h_ba k(make pai( x,y) ;coutend; f nd_convex_hull(pv); syte(Paus);ret rn 0;实验四 动态规划算法的实现实验名称实验四 动态规划算法的实现姓 名汪子成 系院专业信息工程系班 计算机 15- 级班学号2052178实验日期指导教师徐本柱成绩 一、实验目的和要求理解动态规划的基本思想、动态规划算法的基本步骤2.掌握动态规划算法实际步骤、实验预习内容1.动态规划算法的基本要素2.最长公共子序列 3矩阵连乘问题、实验项目摘要( 1) 求两个字符串的
23、最长公共子序列。- 151 X 的一个子序列是相应于 X 下标序列 1, , , m的一个子序列,求 解两个序列的所有子序列中长度最大的,例如输入: pr, peach输出: p。 () 给定两个字符串 a和b,现将串 a通过变换变为串 b,可用的操作为,删除串 a 中的一 个字符;在串 a的某个位置插入一个元素;将串 a 中的某个字母换为另 一个字母。对于任意的串 a 和串 b,输出最少多少次能够将串变为串 b。 思考 : 输出变换的步骤。(3) 输入一个矩阵 ,计算所有的子矩阵中和的最大值。例如 ,输入 -70 9 2 -6 2 - 1 4 -1 8 0 -2 输出为:5 思考:当矩阵很大
24、时,比如 100*100 的矩阵,你的程序还能够很快的得出结果吗 ,如果不能,请思考如何用动 态规划的思想解决。四、实验结果与分析 (源程序及相关说明 ) 源代码如下 :1. 求两个字符串的最长公共子序列。 #include#inc ud sing namesp ce std;v d lo gest(strin 1, strin s2) n a , tep,i,j; in 00 10;for(i=0;i 1.s e(); i ) (=0; s2. i e() ;j+) ai j=0 ;for ( =0 ; js2. ize() ;j+)if (s1 =s j)a0 1;or (i=0 ;i 1.size(); +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解除债务转让合同协议
- 艺术公益项目合作合同协议
- 舞蹈兴趣班合同协议
- 药店职工劳务合同协议
- 蓟县危化品快递合同协议
- 补充抚养协议书范本
- 融资性租赁合同协议
- 装饰售后保养合同协议
- 花椒种苗购销合同协议
- 舞蹈老师签约合同协议
- 银级考试题目p43测试题
- 有限空间作业及应急物资清单
- 思想道德与法治教案第一章:领悟人生真谛把握人生方向
- 61850报文解析-深瑞版-131016
- 0-6岁儿童随访表
- 江西新定额2017土建定额说明及解释
- 国家电网有限公司十八项电网重大反事故措施(修订版)-2018版(word文档良心出品)
- 语文四年级下册《失落的一角》绘本阅读 课件(共61张PPT)
- 附件一∶ 教育部专家实地评估案头必备材料
- 余甘果的栽培与加工工艺
- 中考英语双向细目表
评论
0/150
提交评论