- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法与数据结构课程设计-占用网格计算问题精选
兰州理工大学课程设计报告课程名称:算法与数据结构设计题目:占用网格计算问题系 别:计算机与通信专 业:软件工程学生姓名:朱晨光学 号:起止日期: 2015年 12月26日~2016年1月10日 指导教师:张永,李睿摘要:考虑一个N*N的网格,其中某些方格已被占用。如果两个方格共用公共的边,就说它们属于同一个组,如图示,一组为4个被占用的方格,3组为两个被占用的方格,2个方格被单独占用。假设格子用二维数组来表示。关键字:C++,二维数组,占用网格计算序言占用网格计算问题。考虑一个N*N的网格,其中某些方格已被占用。如果两个方格共用公共的边,就说它们属于同一个组,如图示,一组为4个被占用的方格,3组为两个被占用的方格,2个方格被单独占用。假设格子用二维数组来表示。请编写实现下列目的程序:给定组中的某个方格,计算组的大小;计算不同组的数目;3)列出所有的组。(4)●●●●●●●●●●●●相关的数据结构(数据类型)#define N 10using namespace std;int a[N][N];int b[3][N*N];各问题处理的流程图或伪码描述的算法4.1计算组的大小搜索某组中的一个格子(以坐标确定)Y判断该格子是否为空(即二维数组是否被赋0)N访问这个格子(visit函数),计数器加1递归访问周围四个格子4.2计算不同组的数目4.3列出所有的组输入所有网格信息显示网格信息(display函数)描述实现函数的调用关系图占用网格计算(主函数main)6.调试分析:6.1调试中遇到的问题及对问题的解决方法输入大于网格边长的数会导致数组越界问题,以致程序出错。在输出的信息中提醒操作者输入合适的坐标。6.2算法的时间复杂度和空间复杂度空间复杂度:O(f(n))时间复杂度:0(n)输出典型数据,获得测试结果源程序(带注释)#define N 10using namespace std;int a[N][N];int b[3][N*N];int enter(int m)//输入网格中被占用的格子的信息{ int i,j,k,n,flag; cout请输入N*N的网格的N值endl;//输入网格额外大小 cinn; for(k=1;k=m;k++) { flag=1; cout输入网络第 k个被占用所在行和列(小于等于N):endl; cinij;if(i=n||j=n||i0||j0){ cout!!!!ERROR!!!!endl; cout坐标越界endl; flag=0;}if(flag==1) a[i][j]=1;else k--; } return n;}int empty(int h,int l,int n)//判断网格是否为空 { for(h=0;hn;h++) for(l=0;ln;l++) if(a[h][l]!=0) return 1;//非空返回return 0;//空则返回 } void visit(int h,int l,int count,int num,int n)//递归搜索一组 { if(a[h][l]==1)//若方格被占用则把它赋值为并访问它四周的四个方格{ a[h][l]=0; b[0][num]=h;b[1][num]=l;b[2][num]=count; num++;if(h+1n)visit(h+1,l,count,num,n); if(l+1n)visit(h,l+1,count,num,n); if(h-1=0)visit(h-1,l,count,num,n); if(l-1=0)visit(h,l-1,count,num,n); } }int search(int m,int n)//查询某一方格的组数{ int i,j,k; cout输入网络要查询的方格所在行和列(小于等于N):endl; cinij;if(i=n||j=n||i0||j0){ cout!!!!ERROR!!!!endl; cout坐标越界endl;}for(k=0;km;k++){ if(b[0][k]==ib[1][k]==j) return b[2][k];} return 0;}void display(int count,int m,int n)//显示每组的具体信息{ int i,j,c[N*N/2]={0};count--;cout一共有count个组.endl;for(j=1;j=count;j++)for(i=0;im;i++)if(b[2][i]==j) c[j]++;for(j=1;j=count;
您可能关注的文档
最近下载
- BDA-淡马锡中国旅游市场洞察研究China's Travel Industry-20151130.pptx VIP
- 《建筑材料基础知识》课件.ppt VIP
- BDA-淡马锡中国娱乐行业发展洞察China Recreation Industry-20151130.pptx VIP
- 北京市八年级(下)期中考试英语试卷.docx VIP
- 二轮专题复习03 函数的定义域【二】训练题集【学生版】.docx VIP
- BDA-DST中国农产品行业及价值链解析研究EN-2016 02 06.pptx VIP
- 症瘕(子宫肌瘤)护理常规.pptx VIP
- BDA-ATHM中国二手车产业链全景图研究报告-20150519.pptx VIP
- 鲁画报社版 三年级下册心理健康教育 我能专注做事情 课件.pptx VIP
- 人畜饮水工程施工组织设计汇.doc VIP
文档评论(0)