首先是int
dir[4][2] = {0,1,1,0,-1,0,0,-1};这样的定义方式
Dfs方法:
在dfs的过程中,返回条件是当前这个点已经被访问过或者这个点代表海洋
其次在任何一个点进入dfs后,先标记为访问过
接下来对于上下左右的位置进行推进
在进行dfs时 会在下一层判断是否访问或为海洋
整个这个dfs在做的事情就是 当发现一个陆地后 寻找所有连续的陆地
在main主函数中 每一个二层forloop满足条件 代表发现了新的陆地
Bfs方法:
整体思路是一样的
但是bfs时使用queue的 首先先把第一个点放入其中 每一次放入后都标记为已访问
之后每次读取que中的front对于这个front进行进行推进
各个方位只要满足条件就会放入queue中同时要标记为已访问
Dfs方法:
整体思路跟上面的一样 区别是要记录陆地面积 那么每一次if中都要初始化count
用这个count来记录当前这个新陆地的面积,在每一次dfs后跟新result。由于是满足
陆地等条件时才会进入dfs所以每次进入count++
Bfs方法:
整体也是一样的,由于bfs中其实不存在回溯 所以在第一个点加入是就要count++
之后每次满足条件放入que中,count++