- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 [
您可能关注的文档
最近下载
- 光催化与光催化体系全册配套课件.pptx VIP
- 吉祥物设计课件 2024——2025学年人教版(2024)初中美术七年级上册.pptx VIP
- GeoQ智图成都2025年商圈蓝皮书.pdf
- 新版IATF16949全套质量管理程序文件.docx VIP
- 天然产物化学全套黄酮类化合物的提取与分离课件.ppt VIP
- 沪发改投(2012)130号文.docx VIP
- 顺丰员工手册.pdf VIP
- 分级护理制度试题.docx VIP
- 2023被动式超低能耗建严寒和寒冷地区居住建筑.docx VIP
- 2026北京市总工会职工大学(北京市工会干部学院)“优培计划”招聘应届优秀大学毕业生笔试模拟试题及答案解析.docx VIP
文档评论(0)