算法与数据结构课程设计占用网格计算问题.docxVIP

算法与数据结构课程设计占用网格计算问题.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法与数据结构课程设计占用网格计算问题.docx

罡州理工丈曇 课程设计报告 课程名称:算法与数据结构 设计题目: 占用网格计算问题 系别: 计算机与通信 专业: 软件工程 学生姓名: 朱晨光 学号:1416270236 起止日期:2015年12月26日?2016年1月10日 指导教师:张永,李睿 1?摘要: 考虑一个N*N的网格,其中某些方格已被占用。如果两个方格共用公共的边,就说它们属 于同一个组,如图示,一组为4个被占用的方格,3组为两个被占用的方格,2个方格被单 独占用。假设格子用二维数组来表示。 关键字: C++,二维数组,占用网格计算 2?序言 占用网格计算问题。考虑一个N*N的网格,其中某些方格己被占用。如果两个方格共用公共的 边,就说它们属于同一个组,如图示,一组为4个被占用的方格,3组为两个被占用的方格,2 个方格被单独占用。假设格子用二维数组来表示。请编写实现下列目的程序: 给定组中的某个方格,计算组的大小; 计算不同组的数目; 3)列出所有的组。(4) 相关的数据结构(数据类型) #def ine N 10 us ing namesp ace std; in t a[N][N]; int b[3][N*N]; 各问题处理的流程图或伪码描述的算法 4. 1 计算组的大小 判断该格子是否为空(即己维数组是否被赋0) N 访问这个格子(vi sit函数)计数器加1 4. 2计算不同组的数冃 4.3列出所有的组 输入所有网格信息 显示网格信息(dis play曲数) 5.描述实现函数的调用关系图 占用网格计算(主函数m ain) 网格袒始(e mpty函数)笹入占用网格信息(ente r)搜索指定网格(s earch函数) 显示向格信息(displ ay函数)访问,递归访问(visit函数) 6.调试分析: 6. 1调试中遇到的问题及对问题的解决方法 输入大于网格边长的数会导致数组越界问题,以致程序出错。 在输出的信息中提醒操作者输入合适的坐标。 6. 2算法的时间复杂度和空间复杂度 空间复杂度:0 (f (n)) 时间复杂度:0(n) 1.输岀典型数据,获得测试结果 2.源程序(带注释) #def ine N 10 us ing namesp ace std; in t a[N][N]; int b[3][N*N]; int enter (int m)//输入网格中被占用的格子的信息 { int i,j,k, n,flag; 输入N*N的网格的N /输入网格额外大小 cinn; for(k=l;k { flag=l; cout所在行和列(小于等于; cinij; if (i=n||j=n| { cou endl; cou fl ag=0; } if (f lag==l) a[i][j]二 1; else k一; } ret urn n; } int empty (in 1, int n)//判断网格是否为空 { for (h=0 for (1 ) if (a [h][1]!=0) retu rn 1;//非空返回 return 0;//空则返回 v oid visit(int h, int 1, int coun , int n)//递归 搜索一组 if(a[h][l ]==1)//若方格被占用则把它赋值为并访 问它四周的四个方格 { a[h] [1]=0; b[0 ] [num]=h; b [1][num]=l ; b[2] [num]=count; nu m++; if (h+1 visit (h +1, 1, count , num,n); ■ 1 vi sit (h, 1+1, count, num, n); if (h-1 =0) visit (h~l, 1, coun t, num, n); if(l-l=0) visit (h, 1~1, count, nu m, n); i nt search(intm, int n)// i nt search(int m, int n)//查询某一方格的组数 in t i, j, k; 入网络要查询的方格所在行和列(小于等于N cini j; if(i〉二n||j〉二n||i cout ndl; cout endl; for(+) { if (b[0 [1] [k]==j) return b[2] [k]; } return 0 ; } ,int n)//显示每void dis play(int c ount, int m ,int n)//显示每 { int i, j,c[N*N/2]二{0}; count一一; c ; for(j=l; j +) for(i=0; if (b⑵[i]二二j) c[j]++; =count;j++) { 个点,他们分别是:〃 cou m;i++) if (b [

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档