ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:468.98KB ,
资源ID:18261272      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18261272.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(算法实验一实验报告文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

算法实验一实验报告文档格式.docx

1、 /正整数或者最大加数=1时,只有一种划分情况 if(nm) return q(n,n); /最大加数实际不能大于正整数本身 if(n=m) return q(n,m-1)+1; /递归,n的划分由其q(n,m-1)和n1=n组成 return q(n,m-1)+q(n-m,m); /正整数n的最大加数n1不大于m的划分由n1=m的划分和n1=m-1的划分组成void main() int n,m; coutn; while(n=1) coutm;正整数n的最大加数m的划分数为q(n,m) 进行编译如下:运行结果如下:四、实验步骤1理解算法思想和问题要求;2编程实现题目要求;3上机输入和调试自

2、己所编的程序;4验证分析实验结果;5整理出实验报告。基本题二:棋盘覆盖问题1、掌握棋盘覆盖问题的算法;2、初步掌握分治算法二、实验题: 盘覆盖问题:在一个2k2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。三、实验提示void chessBoard(int tr, int tc, int dr, int dc, int size) if (size = 1) return; int t = tile+, / L型骨牌

3、号 s = size/2; / 分割棋盘 / 覆盖左上角子棋盘 if (dr tr + s & dc = tc + s) chessBoard(tr, tc+s, dr, dc, s); / 用 t 号L型骨牌覆盖左下角boardtr + s - 1tc + s = t; chessBoard(tr, tc+s, tr+s-1, tc+s, s); / 覆盖左下角子棋盘 if (dr = tr + s & chessBoard(tr+s, tc, dr, dc, s); else / 用 t 号L型骨牌覆盖右上角 boardtr + stc + s - 1 = t; chessBoard(tr

4、+s, tc, tr+s, tc+s-1, s); / 覆盖右下角子棋盘 chessBoard(tr+s, tc+s, dr, dc, s); else / 用 t 号L型骨牌覆盖左上角 boardtr + stc + s = t; chessBoard(tr+s, tc+s, tr+s, tc+s, s);编写程序代码如下:#include int board6565,tile; /* tile 为纸片编号*/ int t = tile+, / L型骨牌号 boardtr + s - 1tc + s = t;/输出最终的结果void result(int b65,int n) int i,j

5、; for(i=1;i=n;i+) for(j=1;jj+)bijdc;结果如下: boarddrdc=-1; tile+; chessBoard(1,1,dr,dc,size); result(board,size); 运行调试结果如下:试运行结果如下:提高题一:二分搜索1、熟悉二分搜索算法;2、初步掌握分治算法;二、实验题1、设a0:n-1是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最小元素位置j。当搜索元素在数组中时,I和j相同,均为x在数组中的位置。2、设有n个不同的整数排好序后存放于t0:n-1中,若存在一个下标I,0

6、in,使得ti=i,设计一个有效的算法找到这个下标。要求算法在最坏的情况下的计算时间为O(logn)。1、用I,j做参数,且采用传递引用或指针的形式带回值。bool BinarySearch(int a,int n,int x,int& i,int& j) int left=0; int right=n-1; while(leftamid) left=mid+1; else right=mid-1;2 i=right; j=left; return false;int SearchTag(int a,int n,int x) if(x=amid) return mid; return -1;实

7、验题1代码编写如下:void BubbleSort(int* pData,int Count) /冒泡排序的函数,pData中从0位置处存了Count个数,该函数将数组中元素排序 int iTemp; for(int i=1;Count;i+) for(int j=Count-1;j=i;j-) if(pDataj left=mid; right=mid; for(int ii=0;iitime.hstdio.hmalloc.hint partition(int a,int p,int r) int z=p,x=r+1; int y=ap; int t; while(1) while(a+zy

8、&zy); if(z=x) break; t=az; az=ax; ax=t; ap=ax; ax=y; return x;void quicksort(int a,int p,int r) int q; if(pr) q=partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r);int main() for(;) int k,*a,*b,n,i,d,s;请输入数组个数:); scanf(%d,&n);n a=(int *)malloc(sizeof(int)*n); /给数组a分配空间 srand(unsigned)time(NULL)

9、; b=(int *)malloc(sizeof(int)*n); /给数组b分配空间 for(i=0 ; ai=rand()%100+ 1; /产生小于100 的数据%dt if(i+1 )% 10 = 0 ) /每行10个数据 for(i=0,d=0;dd+) /将数组a的值赋给数组b bd=ai; i+; quicksort(a,0,i-1); /调用快速排序进行排序排序后 if(i+1 )% 10 = 0 ) /输出排好序的数组a,每行10个数据请输入第k小元素:k); for(d=0;d+) if(bd=ak-1) /从数组b中找出第k小的数在原数组中的位置 s=d+1;第%d小元素为:,k,ak-1);第%d小元素位置为:,k,s); system(pause试运行调试结果如下:测试一:K=1测试二:K=n(此处为K=n=102)测试三:k=中位数五:实验总结通过此次实验进一步熟悉了C/C+语言的集成开发环境以及进一步加深了对递归过程的理解,理论结合实际让自己对此阶段的知识掌握的更加牢固,收益颇丰。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1