编程计算由“*”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。如下图所示,在 10*10 的二维数组中,有“*”围住了 15 个点,因此面积为 15。

0 0 0 0 0 0 0 0 0 0

0 0 0 0 * * * 0 0 0

0 0 0 0 * 0 0 * 0 0

0 0 0 0 0 * 0 0 * 0

0 0 * 0 0 0 * 0 * 0

0 * 0 * 0 * 0 0 * 0

0 * 0 0 * * 0 * * 0

0 0 * 0 0 0 0 * 0 0

0 0 0 * * * * * 0 0

0 0 0 0 0 0 0 0 0 0 

输入格式

一个10行10列的矩阵

输出格式

围住的面积

输入/输出例子1

输入:

0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 1 1 0 0 0

0 0 0 0 1 0 0 1 0 0

0 0 0 0 0 1 0 0 1 0

0 0 1 0 0 0 1 0 1 0

0 1 0 1 0 1 0 0 1 0

0 1 0 0 1 1 0 1 1 0

0 0 1 0 0 0 0 1 0 0

0 0 0 1 1 1 1 1 0 0

0 0 0 0 0 0 0 0 0 0

输出:

15

第一次看到这一题我没想到用bfs,第一个想到的是并查集。但仔细想了一下,还真不能用并查集来做。像这种行列阵,不是用dfs就是用bfs了。但这题明细用bfs简单一些。

#include<bits/stdc++.h>
using namespace std;
int tntccc;
int a[11][11];
int sp[11][11],sq[4][2]={-1,0,1,0,0,-1,0,1};
struct node{int x,y;
}q[200];
void bfs(int m,int n);
void bfsag(int m,int n);
int main(){for(int i=1;i<=10;i++)for(int j=1;j<=10;j++)cin>>a[i][j];for(int j=1;j<=10;j++)if(a[1][j]==0)bfs(1,j);for(int j=1;j<=10;j++)if(a[10][j]==0)bfs(10,j);for(int i=1;i<=10;i++)if(a[1][i]==0)bfs(1,i);for(int i=1;i<=10;i++)if(a[10][i]==0)bfs(10,i);for(int i=1;i<=10;i++)for(int j=1;j<=10;j++)if(a[i][j]==0&&sp[i][j]==0)bfsag(i,j);cout<<tntccc<<"\n";return 0;
}
void bfs(int m,int n){a[m][n]=1;sp[m][n]=1;int h=1,t=1;q[t].x=m;q[t].y=n;t++;while(h<t){int x=q[h].x;int y=q[h].y;for(int i=0;i<4;i++){int nx=x+sq[i][0];int ny=y+sq[i][1];if(1<=nx&&nx<=10&&1<=ny&&ny<=10&&a[nx][ny]==0&&sp[nx][ny]==0){sp[nx][ny]=1;a[nx][ny]=1;q[t].x=nx;q[t].y=ny;t++;}}h++;}
}
void bfsag(int m,int n){sp[m][n]=1;tntccc++;int h=1,t=1;q[t].x=m;q[t].y=n;t++;while(h<t){int x=q[h].x,y=q[h].y;for(int i=0;i<4;i++){int nx=x+sq[i][0],ny=y+sq[i][1];if(1<=nx&&nx<=10&&1<=ny&&ny<=10&&a[nx][ny]==0&&sp[nx][ny]==0){sp[nx][ny]=1;q[t].x=nx;q[t].y=ny;t++;tntccc++;}}h++;}
}

面积(c++,bfs)相关推荐

  1. 4.6模拟 宽度优先搜索

    总结 bfs除了代码能力没有任何算法... 有些细节是值得注意的 T1 面积(area) bfs被我写成了dfs... (不过我觉得这么写挺不戳) 核心思路就是用一个flag记录当前跑得这些点有没有效 ...

  2. 有备无患!应届生CV算法岗面试指南

    点击我爱计算机视觉标星,更快获取CVML新技术 52CV曾经跟大家分享了很多计算机视觉相关就业机会,但有机会还要努力把握机会!在面试中该准备什么?有什么注意的事项?希望本文能对你有帮助. 先收藏,再阅 ...

  3. Leetcode每日一题总目录(动态更新。。。)

    0. 概要 leecode每日一题(也可能多题)题解跟踪记录及总目录. 常用算法解题思路和技巧及数据结构: 预处理:数组排序(954),哈希表... 双指针法 682,125,905 单向链表 2 双 ...

  4. 695.岛屿的最大面积(026)BFS

    二:思路 1.这里的遍历数据方式为BFS广度遍历 2.当我们遇到一个'1'的时候,我们就遍历他的左右上下(邻接点),如果是1那就入队,直到队列 为空为止. 3.我们记录每个岛屿的面积是采用 我们设置初 ...

  5. LeetCode 695. 岛屿的最大面积(图的BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS广度优先搜索 2.2 DFS深度优先搜索 1. 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直 ...

  6. 417,BFS和DFS两种方式求岛屿的最大面积

    想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答.也可以扫描下面的二维码关注 给定一个包含了一些0和1的非空二维数组grid . 一个岛屿是 ...

  7. 695. 岛屿的最大面积(适合 初学者 理解的java版BFS)

    文章目录 BFS 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻.你可以 ...

  8. LeetCode算法题7:DFS和BFS

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

  9. 算法提高课-搜索-Flood fill算法-AcWing 1098. 城堡问题:flood fill、bfs

    题目分析 来源:acwing 分析:找房间个数,也就是找连通的个数. 样例画出来的房间个数如下图:其中'|' 和'-'不是墙,只有#是墙. 分析:这题不用建图,直接bfs(flood fill)来做, ...

最新文章

  1. 需求分析阶段项目经验
  2. 【设计模式】迭代器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  3. 《Redis 设计与实现》读书笔记-Redis 对象
  4. OpenGL noperspective在窗口空间中线性插值的实例
  5. 增加RIL组件时编辑出现的问题
  6. 图标截取——背景偏移量技术
  7. mysql socket delphi_异步SOCKET分包和组包的一种通用算法
  8. mqtt之C++编译
  9. 声艺fx16调音台怎么样_声艺调音台FX16II使用说明书.doc
  10. 暨反欺诈建模场景实操
  11. Python绘图模块 -- turtle
  12. 仿小米官网首页 动态交互(HTML+css+jq)1.通栏以及logo部分
  13. COOC6.2增加同义词合并无意义词删除等功能
  14. 计算机提高游戏运行速度的方法,怎么提高游戏运行速度
  15. h5文件格式数据集制作
  16. alter命令的使用
  17. 不用PS也能设计出精美图片?这几个强大的在线设计网站了解一下~
  18. OKHTTP和retrofit 网络框架集成的有https验证的APP破解抓包
  19. Proteus 8 Professional 创建新项目
  20. Xcode7 网络请求报错:The resource could not be loaded because the App Transport Security policy requir...

热门文章

  1. CryptoJS与JSEncrypt 加密算法
  2. Ubuntu 22.04 安装中文输入法
  3. 敏捷软件研发思想讲解
  4. 链表的学习 day2
  5. 信号与系统实验 01 - | 连续系统频域分析的MATLAB实现
  6. 带您聚焦第十四届中国航展新看点
  7. 将字符串“abc123“转化为 字符串“a21cb3“JAVA实现
  8. Antd源码浅析(二)InputNumber组件 一
  9. Linux添加定时任务提示权限不够/var/spool/cron/tmp.XXXXFSq8E3: 权限不够 crontab: edits left in /tmp/crontab.HaZsu1
  10. C语言中一个程序写完后怎么运行啊?