题目描述:

神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等。加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王。  这是一个由海洋、岛屿和海盗组成的危险世界。面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国。

杰克船长手头有一张整个海域的海图,上面密密麻麻分布着各个海屿的位置及面积。他想尽快知道整个海域共有多少岛屿以及最大岛屿的面积。

【约束条件】

①若一个陆地八个方向之一(上、下、左、右、左上、右上、左下、右下)的位置也是陆地,则视为同一个岛屿。

② 假设第一行,最后一行,第一列,最后一列全为0.

③ 1<M, N≤500   1<T≤100000

输入

第1行:     M  N  T      表示海域的长,宽及一个单位表示的面积大小

接下来有M行 ,每行有N个01组成的序列以及其中穿插一些空格。0表示海水,1表示陆地,其中的空格没用,可以忽略掉。
输出

输出一行,有2个整数,一个空格间隔,表示整个海域的岛屿数,以及最大岛屿的面积
样例输入

8 16 99
00000000 00000000
0000110011000000
0001111000111000
0000000  00 0000000
00111  111000001  10
001110000  0000000
0100001111 111100
0000000000000000

样例输出

5 990

题意描述:找出有多少组8个方向之一相连的1,并找出最长的一组1的个数乘以t后就是面积。

程序代码:

#include<stdio.h>
void dfs(int x,int y);
int m,n,max;
int ans=0;
long long q;
int a[510][510];
int main()
{int i,j,sum,t;while(scanf("%d%d",&m,&n)!=EOF){max=0;scanf("%d",&t);sum=0;for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%1d",&a[i][j]);for(i=0;i<m;i++)for(j=0;j<n;j++)if(a[i][j]==1){ans=0;dfs(i,j);sum++;}   q=(long long)t*max;printf("%d %lld\n",sum,q);  }return 0;
}
void dfs(int x,int y)
{ans++;int tx,ty,i,j,k;int next[8][2]={1,0, 0,1, -1,0, 0,-1, 1,1, -1,-1, 1,-1, -1,1};a[x][y]=0;for(k=0;k<8;k++){tx=x+next[k][0];ty=y+next[k][1];if(tx<0||tx>m-1||ty<0||ty>n-1)continue;if(a[tx][ty]==1)dfs(tx,ty);}if(ans>max)max=ans;return;
}

B.最大岛屿(dfs)相关推荐

  1. leetcode day 2 【1905. 统计子岛屿】 BFS/DFS

    解题思路 BFS 找到grid2中的每一座岛屿[暴力搜索整个grid矩阵],对每座岛屿BFS,过程中check岛屿格子是否在grid1中为岛屿. class Solution:def countSub ...

  2. [蓝桥杯2018初赛]全球变暖-dfs,bfs,连通块

    解题思路: bfs:遍历所有未遍历过的陆地,通过bfs计算出当前位置连通陆地的数量cnt,以及被淹没陆地的数量bound,若cnt == bound表示完整淹没的一个岛屿 dfs:将连通块全部标记,如 ...

  3. leetcode - 统计封闭岛屿的数目

    有一个二维矩阵 gridgridgrid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 ). 我们从一块陆地出发,每次可以往上下左右 4 个方向相邻区域走,能走到的所有陆地区域,我们将其 ...

  4. python里怎么使用snip_MacOS下好用的截图软件snip

    scala shuffle val arr = (0 to 100).map(_ * 1d) /// 下面这一步只能用to不能用until,scala里面实现返回的两个Range继承路径不同,不能混用 ...

  5. Leetcode最短的桥

    934. 最短的桥 思路:先通过任意搜索方法找到其中一个岛屿 然后利用广度优先搜索,查找其与另一个岛屿的最短距离. class Solution {public:vector<int> d ...

  6. 【Leetcode刷题记录_C++】【搜索】

    搜索 算法简介 深度优先遍历 (1)从一个未访问过的顶点开始,访问它的一个未访问过的相邻顶点. (2)如果顶点的所有相邻顶点都是已访问过的,则需要回溯到之前的一个顶点,选取它的另一个未被访问的相邻顶点 ...

  7. 【蓝桥杯】搜索专题总结——真题讲解

    写在前面 小伙伴们我们又见面啦~这篇文章拖了又拖,终于写完啦.这篇讲了几道蓝桥杯中考察DFS和BFS的真题,大家可以去看看前面两篇文章,对搜索讲的很详细.[一万字]蓝桥杯算法竞赛备考(一)--搜索专题 ...

  8. 【Leetcode】每日一题打卡(64)

    1619. 删除某些元素后的数组均值 - 简单ac class Solution { public:double trimMean(vector<int>& arr) {sort( ...

  9. java 算法思想,Java/12_算法思想.md at master · Jn6/Java · GitHub

    常见的算法思想 一.排序思想 1.前K个高频元素(347) 问题描述:给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = ...

  10. 岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积

    思路参考上文: 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量 本文讲解695. 岛屿的最大面积问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 题目 给定一个包含了一些 0 和 1 ...

最新文章

  1. java开发培训中消息中间件的优势有哪些
  2. Sparkamp;Spark性能调优实战
  3. linux内核pwn,[内核pwn] 环境搭建
  4. [AGC018 B] Sports Festival 解题报告
  5. C语言计算月份天数if,阅读下列说明,回答问题1至问题3。【说明】 以下代码由C语言书写,能根据指定的年、月计算当月所含天数 - 赏学吧...
  6. 在中国做操作系统研发 20 年是种什么体验?
  7. python自动化从零开始_从零开始学Selenium自动化测试:基于Python:视频教学版
  8. 欢乐纪中某A组赛【2019.7.8】
  9. java读取Resources下文件
  10. java绕过加密密码_JAVA中使用MD5加密实现密码加密
  11. js实现侧边栏信息展示效果
  12. 【Head First Java 读书笔记】(四)对象的行为
  13. datagridview滚动条自动滚动_一个自适应滚动条的实现
  14. sap business one 开发_敏捷软件开发实践:估算与计划读书笔记120第18章 估算速度...
  15. (Windbg调试一)minidump崩溃捕捉
  16. etc fstab 详解linux,Linux下/etc/fstab文件详解
  17. 通过QQ 2012 客户端协议获取clientkey的0x91数据包分析
  18. 计算机组装与维护公开课,(最新整理)计算机组装与维护公开课教案
  19. Java基础知识(二) 面向对象的技术
  20. OpenCV实践之路——方形图片对角线切割

热门文章

  1. [转]Android web开发快速入门
  2. transport方式连接Elasticsearch6.2.3
  3. 莫比乌斯反演习题总结
  4. Pandas数据帧(DataFrame)
  5. Python入门-散点图绘制
  6. 【ssm】极简的极省力的开发方式——针对简单型EasyUI的增删改查的后台管理
  7. 【python】matplotlib生成散点矩阵图
  8. PAT:1001. 害死人不偿命的(3n+1)猜想 (15) AC
  9. 把view放在地图覆盖物上
  10. 再论句子中单词的逆序输出