标题: 找到最大岛
标签: 搜索深度优先搜索广度优先搜索
详情: 哼通过秘密方法得到一张不完整的钓鱼岛航拍地图。钓鱼岛由一个主岛和一些附属岛屿组成,小哼决定去钓鱼岛探险。下面这个10*10的二维矩阵就是钓鱼岛的航拍地图。图中数字表示海拔,0表示海洋,1~9都表示陆地。现在需要计算出最大岛的面积(即有多少个格子)。

1
2
1
0
0
0
0
0
2
3
3
0
2
0
1
2
1
0
1
2
4
0
1
0
1
2
3
2
0
1
3
2
0
0
0
1
2
4
0
0
0
0
0
0
0
0
1
5
3
0
0
1
2
1
0
1
5
4
3
0
0
1
2
3
1
3
6
2
1
0
0
0
3
4
8
9
7
5
0
0
0
0
0
3
7
8
6
0
1
2
0
0
0
0
0
0
0
0
1
0
输出格式:
一行2个整数,表示n行m列
提示: 最大岛的面积
限制: n<=100
m<=100
样例:

输入

10 10
1 2 1 0 0 0 0 0 2 3
3 0 2 0 1 2 1 0 1 2
4 0 1 0 1 2 3 2 0 1
3 2 0 0 0 1 2 4 0 0
0 0 0 0 0 0 1 5 3 0
0 1 2 1 0 1 5 4 3 0
0 1 2 3 1 3 6 2 1 0
0 0 3 4 8 9 7 5 0 0
0 0 0 3 7 8 6 0 1 2
0 0 0 0 0 0 0 0 1 0

输出

38

题解:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
using namespace std;
const int maxn=105;
int n,m;
//int vis[maxn][maxn];
int a[maxn][maxn];
int maxx=-1;
int dir[4][2]={0,1,-1,0,0,-1,1,0};
int ans=0;
void dfs(int x,int y){ans++;//岛屿数增1a[x][y]=0;//搜过的岛屿置为0,以防止下次搜索时重复计数for(int i=0;i<4;i++){int tx=x+dir[i][0];int ty=y+dir[i][1];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]>0){dfs(tx,ty);}}return;
}
int main()
{scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]>0){dfs(i,j);if(ans>maxx){maxx=ans;//记录最大岛屿数}ans=0;//每搜一次岛屿数重置为0}}}printf("%d\n",maxx);return 0;
}

DFS【模板】找到最大岛相关推荐

  1. Dijkstra+DFS模板总结

    关于Dijstra的初级运用是,在第一标尺的基础上有下面三个角度: 边权:c[maxn] = {maxn}, cost[manx][maxn] = {inf}; 点权:w[maxn] = {0}, w ...

  2. 洛谷 P1605 迷宫(DFS模板)

    题目 https://www.luogu.com.cn/problem/P1605 思路 写一个DFS模板 #include<iostream> #include<algorithm ...

  3. 搜索专题-----bfs、dfs模板,栈,队列

    P1443 马的遍历 题目描述 有一个 n×m 的棋盘,在某个点 (x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步. 输入格式 输入只有一行四个整数,分别为 n,m,x,y. 输 ...

  4. DFS模板 SDNU 1015

    传送门:SDNUOJ 1015​​​​​​ 一道非常清晰的搜索题 先上AC码 #include<cstdio> #include<iostream> #include<a ...

  5. hdu 1241Oil Deposits(dfs模板)

    题目链接-- http://acm.hdu.edu.cn/showproblem.php?pid=1241 首先给出一个n*m的字符矩阵,'*'表示空地,'@'表示油井.问在这个矩阵中有多少组油井区? ...

  6. 水洼数目(dfs万能模板)

    水洼数目(dfs万能模板) /* 有一个大小为 N×M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的. 请求出 园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分) W 限制条件 ...

  7. 我的世界java存档怎么导入_我的世界:地图种子输入“skull”,真的会找到沙漠骷髅岛么?...

    背景:早年间,流传于Minecraft的一个视频.玩家在地图种子中输入"skull",能够在沙漠中发现一座"沙漠骷髅岛".一时间大量的玩家来到这个种子寻找传说中 ...

  8. 小雨的矩阵(DFS三参数模板题)

    E-小雨的矩阵 题目描述 小雨有一个n×n 的矩阵,起点在(1,1),终点在(n,n),只能向下或向右走,且每次只能走 1 步. 矩阵上每个点都有一个点权a(i,j). 求走到终点的路径有多少不同的点 ...

  9. LeetCode算法题7:DFS和BFS

    文章目录 前言 深度优先搜索算法伪代码: 广度优先搜索算法伪代码: 一.图像渲染 DFS: BFS: 上面BFS算法存在的问题: 修改 1: 修改 2: 二.岛屿的最大面积 DFS: BFS : 三. ...

最新文章

  1. Android开源中国客户端学习 (自定义View)左右滑动控件ScrollLayout
  2. 数据库知识点4——关系代数中易错题的总结
  3. A. A Prank
  4. Opencv--仿射变换+投射变换+单应性矩阵
  5. HDU1230 火星A+B【进制】
  6. 一个盒子相对于另一盒子垂直居中的方法
  7. Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决
  8. RK3288_Android7.1调试红外遥控IR
  9. iOS UiCollectionViewtroller 间距清0
  10. 你是如何看待 ‘裸辞’ 这件事的?
  11. 关于linux下fork()函数的解析:子进程继续创建子进程,如何停止?
  12. firefox 2.0版如何自己制作绿色版?
  13. TFS2010用户解锁
  14. 百度指数 php,百度指数是什么?百度指数有什么用?百度指数怎么用?
  15. Jenkins 基础02 配置插件源
  16. Ankylosauridae OS
  17. py语言和php,php和python什么区别
  18. A股全市场股票历史行情低频日频EOD数据
  19. USB限流IC,过流保护芯片
  20. 【学习笔记】CS584 Machine Learning

热门文章

  1. 利用samba漏洞入侵linux主机(samba低版本漏洞利用)
  2. C语言合法标识符(含知识点)
  3. 关于R语言中文公开课
  4. spring中读不到配置文件问题
  5. python 中右移、左移运算符的作用
  6. cad批量转换低版本如何实现?
  7. 免费在线转换,CAD转换成PDF
  8. CC2540\CC2541 资料整理
  9. 毕业设计 基于云平台的火灾报警系统设计与实现 - stm32 物联网 单片机 OneNET云平台
  10. 安卓13开发者模式怎么开?