# BFSIslands **Repository Path**: rainmax/DFSIslands ## Basic Information - **Project Name**: BFSIslands - **Description**: 使用BFS算法随机生成岛屿,并使用BFS算法对生成的岛屿的面积进行统计 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-08-16 - **Last Updated**: 2021-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 2016年8月16日 使用广度优先算法,自动生成随机数量,随机面积大小的岛屿 首先,接受输入两个数值,为生成地图的横坐标以及纵坐标最大值。 范围在9-50之间。 根据输入创建指定大小的int数组。数组中[x,y]=0表示海洋,[x,y]=1表示岛屿 岛屿数量,取x,y中较小值的一半。 使用for循环来依次生成岛屿 每个岛屿面积大小上限通过随机函数获得,int MaxPoint = rd.Next(IsLandsNum * 2) + 3; 岛屿中心点也通过随机函数获得,获得中心点后,需要判断该点是否已经存在岛屿,或者是否与其他岛屿相连 下图为简单进行判断的结果,判断时只对当前点是否存在岛屿进行判断,导致生成岛屿相连了。 if(map[x,y]==0) ■■■■■■■■■■■■▓▓▓▓▓▓■■■■■■■■■■■■ ■■■■■■■▓▓▓▓▓▓▓▓▓▓▓■■■■■■■■■■■■ ■■■■■■■▓▓▓▓▓▓▓▓▓▓▓■■■■■■■■▓▓▓▓ ■■■■■■■▓▓▓▓▓■■■▓▓▓▓▓■■■■■■▓▓▓▓ ■■■■■■■▓▓▓▓▓■■■■■▓▓▓■■■■■■▓▓▓▓ ■■■■■■■■■■■■■■■■■▓▓▓■■■■■■■▓▓▓ ■■■■■■■■■▓▓▓▓■■■■■■■■■■■■■■■■■ ■■■■■■■■▓▓▓▓▓■■■■■■■■■■■■■■■■■ ■■■■■■■■▓▓▓▓▓■■■■■■■■■■■■■■■■■ ■■■■■■■■▓▓▓▓▓■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■■■▓▓▓▓ ■■■■■■■■■■■■■■▓▓▓▓■■■■■■■■▓▓▓▓ ■■■■■■■■■■■■■■▓▓▓▓■■■■■■■■▓▓▓▓ ■■■■■■■■■■■■■■▓▓▓▓■■■■■■■■▓▓▓▓ ■■■■■■■■■■■■■■■▓▓▓■■■■■■■■▓▓▓▓ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■▓▓ ■■■■■■■■■■■■■■■▓▓▓■■■■■■■■■■■■ ■■■▓▓▓■■■■■■■■■▓▓▓▓▓▓▓▓▓■■■■■■ ■■■▓▓▓▓▓■■■■■■■▓▓▓▓▓▓▓▓▓■■■■■■ ■■■▓▓▓▓▓■■■■■■■■■■▓▓▓▓▓▓■■■■■■ ■■■▓▓▓▓▓■■■■■■■■■■▓▓▓▓▓▓■■■■■■ ■■■▓▓▓▓▓■■■■■■■■■■▓▓▓▓▓▓■▓▓▓■■ ■■■■■■■■■■■■■■■■■■■■■▓▓▓■▓▓▓▓▓ ■■■■■■■■■■■■■■■■■■■■■■■■▓▓▓▓▓▓ ■■■■■■■■■■■■■■■■■■■■■■■▓▓▓▓▓▓▓ ■■■■■■■■■■■■■■■■■▓▓▓▓▓▓▓▓▓▓▓▓▓ ■■■■■■■▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ■■▓▓▓■■▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ■■▓▓▓■■▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ■■▓▓▓■■▓▓▓▓▓▓▓▓■▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 重新设计一个CanCreatePoint函数 static bool CanCreatePoint(int x,int y,int[,]map,int[,]current) 接受x坐标,y坐标,以及地图数组,当前岛屿数组,从八个方向判断当前点是否会与 其他岛屿合并,以及当前点是否已经存在岛屿 下图为改进后的生成结果,现在生成的岛屿已经不会和其他岛屿相连了 预计生成随机岛屿数量为16个, 第0号岛屿,预设最大面积为17 第1号岛屿,预设最大面积为12 第2号岛屿,预设最大面积为20 第3号岛屿,预设最大面积为3 第4号岛屿,预设最大面积为14 第5号岛屿,预设最大面积为19 第6号岛屿,预设最大面积为23 第7号岛屿,预设最大面积为10 第8号岛屿,预设最大面积为24 第9号岛屿,预设最大面积为19 第10号岛屿,预设最大面积为23 第11号岛屿,预设最大面积为13 第12号岛屿,预设最大面积为15 第13号岛屿,预设最大面积为5 第14号岛屿,预设最大面积为13 ■■■■■■▓▓▓▓▓▓■▓▓■■▓▓▓▓▓■▓▓▓▓▓▓■ ■■■■■■▓▓▓▓▓▓■▓▓■▓▓▓▓▓▓■▓▓▓▓▓▓■ ■■■■■■▓▓▓▓■■■■■■▓▓▓▓▓▓■▓▓▓▓▓▓■ ■■■■■■▓▓▓▓■▓▓▓■■■▓▓■■■■▓▓▓▓▓▓■ ■■■■■■▓▓▓▓■▓▓▓▓▓■▓■■▓▓■■■■■■■■ ■■■■■■■■■■■▓▓▓▓▓■■■▓▓▓▓▓■▓▓■■■ ■■■■■■■■■■■▓▓▓▓▓■■■▓▓▓▓▓■▓▓▓■■ ■■■■■■■■■■■▓▓▓▓▓■■■■■■■■■▓▓▓■■ ▓▓■■■■■■■■■■■■■■■■■■▓▓▓▓■▓▓▓■■ ▓▓▓■■■▓▓▓▓▓■■■■■■■■▓▓▓▓▓■▓▓▓■■ ▓▓▓■■■▓▓▓▓▓■■■■■■■■▓▓▓▓▓■■■■■■ ▓▓▓■■■▓▓▓▓▓■▓▓▓▓■■■▓▓▓▓▓■■■■■■ ▓▓▓■■■▓▓▓▓▓■▓▓▓▓■■■■■■■■■■■■■■ ■■■■▓■■■■■■■▓▓▓▓■■■■■■■■■■■■■■ ■■▓▓▓■■■■■▓▓▓▓▓▓■■■■■■■■■■■■■■ ■■▓▓▓■■■■■▓▓▓▓▓▓■■■■■■■■■■■■■■ ■■■■■■■■■■■■■▓▓▓■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■▓▓▓▓■■■■■■■■■■■ ■■■■■■■■■■■■■■■▓▓▓▓■■■■■▓▓▓▓■■ ■■■■■▓▓▓▓■■■■■■▓▓▓▓■■■■■▓▓▓▓■■ ■■■■■▓▓▓▓■■■■■■■▓▓▓■■■■■▓▓▓▓■■ ■■■■■▓▓▓▓■■■■■■■■■■■■■■■▓▓▓▓■■ ■■■■■■▓▓▓■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■▓▓▓■■■■■■ ■■■■■■■■■■■■■■■■■■■■■▓▓▓■■■■■■ 2016年8月17日 设计并实现通过广度优先搜索搜索对地图上岛屿数量以及面积的统计 实现原理,遍历地图上所有的点。 当遇到一个点为岛屿点,并且这个点没有被计算过面积时,我们使用 广度优先搜索算法对这个点进行扩展,当扩展到的点不是海洋,以及 没有超出地图范围,以及没有被计算过面积时,当前岛屿面积增加, 当所有扩展完成时,当前岛屿统计完成,输出结果,查找下一个岛屿。 当前函数在运行时偶尔出现了数组越界的情况,非常奇怪,检查后 没有发现有越界的地方。 ■■■■■■■■■■■■■■■■■■■■■■■■■▓▓▓■■ ■■■■■■■■■■■■■■■■■■■■■■■■■▓▓▓▓▓ ■■■■■■■■■■▓▓▓■■■■■■■■■■■■▓▓▓▓▓ ■■■■■■■■■■▓▓▓■■■■■■■■■■■■■■■▓▓ ■■■■■■■■■■▓▓▓■■■■■■■■■■■▓▓▓■▓▓ ■■■■■■■■■■■■■■■■■■■■■■■▓▓▓■■■■ ■■■■■■■■■■■■■■■■■■■■■■■▓▓▓■▓▓▓ ■■■■▓▓▓▓■■■■■■■■■■■■■■■▓▓■■▓▓▓ ■■■■▓▓▓▓■■■■■■■■■■■■■■■■■■▓▓▓▓ ■■■■▓▓▓▓■■■■■■■■■■■■■■■■■■▓▓▓▓ ■■■■■▓▓▓■■■■■■■■■■■▓▓▓▓▓▓■▓▓▓▓ ■■■■■■■■■■■■■■■■■■■▓▓▓▓▓▓■▓▓▓▓ ■■■■■■■▓▓▓▓▓■■■■■■■▓▓▓▓▓▓■■■■■ ■■■■■■■▓▓▓▓▓■■■■■■▓▓▓▓▓▓▓■■■■■ ■■■■■■■▓▓▓▓▓■■■■■■▓▓■■■■■■■■■■ ■■■■■■■▓▓▓▓▓■■■■■■▓▓■▓▓▓■▓▓▓▓■ ■■■■■■■■■■■■■▓■■■■■■■▓▓▓■▓▓▓▓■ ■■■■■■■■■▓▓▓▓▓■■■■■■■▓▓▓■▓▓▓▓■ ■■▓▓▓▓▓■■▓▓▓▓▓■■■■■■■■■■■▓▓▓▓■ ■■▓▓▓▓▓▓■▓▓▓▓▓■■■■■■■■■■▓▓▓▓▓■ ■■▓▓▓▓▓▓■■■■■■■■■■■■■■■■■■▓▓▓■ ■■▓▓▓▓▓▓■■■■▓▓▓▓▓■■■■■■■■■■■■■ ■■▓▓▓▓▓■■■■■▓▓▓▓▓■■■■■■■■■■■■■ ■■■■■■■■■■■■▓▓▓▓▓■▓▓▓▓■■■■■■■■ ■■■■■■■■■■■■▓▓▓▓▓■▓▓▓▓■▓▓▓■■■■ ■■■■■■■■■■■■■■■■■■▓▓▓▓■▓▓▓■■■■ ■■■■■■■■▓▓▓■■■■■■■■▓▓▓■▓▓▓■■■■ ■■■■■■■■▓▓▓▓▓■■■■■■■■■■■■■■■■■ ■■■■■■■■▓▓▓▓▓■■■■▓▓▓▓■■■■■■■■■ ■■■■■■■■▓▓▓▓▓■■■■▓▓▓▓■■■■■■■■■ ***********************岛屿打印完毕**************************** 找到第1号岛屿,当前岛屿坐标为0,25.当前岛屿面积为17 找到第2号岛屿,当前岛屿坐标为2,10.当前岛屿面积为9 找到第3号岛屿,当前岛屿坐标为4,24.当前岛屿面积为11 找到第4号岛屿,当前岛屿坐标为6,27.当前岛屿面积为22 找到第5号岛屿,当前岛屿坐标为7,4.当前岛屿面积为15 找到第6号岛屿,当前岛屿坐标为10,19.当前岛屿面积为29 找到第7号岛屿,当前岛屿坐标为12,7.当前岛屿面积为20 找到第8号岛屿,当前岛屿坐标为15,21.当前岛屿面积为9 找到第9号岛屿,当前岛屿坐标为15,25.当前岛屿面积为24 找到第10号岛屿,当前岛屿坐标为16,13.当前岛屿面积为16 找到第11号岛屿,当前岛屿坐标为18,2.当前岛屿面积为28 找到第12号岛屿,当前岛屿坐标为21,12.当前岛屿面积为20 找到第13号岛屿,当前岛屿坐标为23,18.当前岛屿面积为15 找到第14号岛屿,当前岛屿坐标为24,23.当前岛屿面积为9 找到第15号岛屿,当前岛屿坐标为26,8.当前岛屿面积为18 找到第16号岛屿,当前岛屿坐标为28,17.当前岛屿面积为8