给你一张n*m的西湖地图二值图,其中西湖的轮廓用1表示,轮廓内核轮廓外均用0表示。现在请你统计西湖的面积,即轮廓内0的个数。

news/2024/10/29 3:27:02/

给你一张n*m的西湖地图二值图,其中西湖的轮廓用1表示,轮廓内核轮廓外均用0表示。

现在请你统计西湖的面积,即轮廓内0的个数。

解析:

#include <iostream>

#include <string>

#include <queue>

#include <vector>

using namespace std;

struct pos { int x, y; };

int bfs(vector<string> & map, vector<vector<bool> > & visit)

{

const int dir[4][2] = { { -1,0 },{ 1,0 },{ 0,-1 },{ 0,1 } };

int n = map.size(), m = map[0].size();

queue<pos> que;

pos start{ 0,0 };

que.push(start);

visit[start.x][start.y] = true;

while (!que.empty())

{

pos cur = que.front(), next;

que.pop();

for (int i = 0; i < 4; ++i)

{

next.x = cur.x + dir[i][0];

next.y = cur.y + dir[i][1];

if (next.x >= 0 && next.x < n && next.y >= 0 && next.y < m && \

!visit[next.x][next.y] && map[next.x][next.y] != '1')

{

que.push(next);

visit[next.x][next.y] = true;

}

}

}

int count = 0;

for (int i = 0; i < n; ++i)

for (int j = 0; j < m; ++j)

if (visit[i][j]) ++count;

int one = 0;

for (int i = 0; i < n; ++i)

for (int j = 0; j < m; ++j)

if (map[i][j] == '1') ++one;

return m * n - count - one;

}

int main()

{

int n, m;

while (cin >> n >> m)

{

vector<string> mp(n + 2);

vector<vector<bool> > visit(n + 2, vector<bool>(m + 2, false));

mp[0] = string(m + 2, '0');

for (int i = 1; i <= n; ++i)

{

cin >> mp[i];

mp[i] = "0" + mp[i] + "0";

}

mp[n+1] = string(m + 2, '0');

cout << bfs(mp, visit) << endl;

}

return 0;

}


http://www.ppmy.cn/news/2618.html

相关文章

《web课程设计》基于HTML+CSS+JavaScript典的中医药大学网(11个页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

移动WEB开发之rem布局--苏宁首页案例制作(flexible.js)

简洁高效的rem适配方案flexible.js 手机淘宝团队出的简洁高效 移动端适配库 我们再也不需要在写不同屏幕的媒体查询&#xff0c;因为里面js做了处理 它的原理是把当前设备划分为10等份&#xff0c;但是不同设备下&#xff0c;比例还是一致的。 我们要做的&#xff0c;就是确…

全新社交电商模式来袭,消费增值结合共享经济完成消费升级

大家好&#xff0c;我是林工&#xff0c;不知道大家是否了解消费增值&#xff1f;这是一个消费储量为基础的理念&#xff0c;体现的是消费者的消费与回报问题&#xff0c;普遍的消费返利&#xff0c;消费全返渐渐地已经不能够满足目前的客户&#xff0c;也就有了一个满足与这部…

HBase的数据模型和存储原理

HBase的数据模型 HBase中表的逻辑结构 Name Space&#xff08;命名空间&#xff09; 类似于关系型数据库的 DatabBase 概念&#xff0c;每个命名空间下有多个表。HBase有两个自带的命名空间&#xff0c;分别是 hbase 和 default&#xff0c;hbase 中存放的是 HBase 内置的表&a…

MySQL进阶篇(二) - 索引

一、索引概述&#xff08;P66&#xff09; 1. 介绍 索引&#xff08;index&#xff09;是帮助 MySQL 高效获取数据的数据结构&#xff08;有序&#xff09;。 在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&…

函数传参、返回值、作用域、匿名函数、简易时钟

一、为什么需要函数 函数&#xff1a;function&#xff0c;是被设计为执行特定任务的代码块。代码复用 二、函数使用 1. 函数的声明语法 function 函数名() {函数体}2. 函数名命名规范 和变量名基本一致 尽量小驼峰命名法 前缀应该为动词 命名建议&#xff1a;常用动词约…

Python对json的操作总结

Json简介&#xff1a;Json&#xff0c;全名 JavaScript Object Notation&#xff0c;是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。现在也常用于http请求中&#xff0c;所以对json的各种学习&#xff0c;是自然而然的事情。 J…

166.JWT简介与Django中使用JWT

1. JWT 1.1 JWT概述 基于django-rest-framework的登陆认证方式常用的大体可分为四种: BasicAuthentication&#xff1a;账号密码登陆验证SessionAuthentication&#xff1a;基于session机制会话验证TokenAuthentication&#xff1a; 基于令牌的验证JSONWebTokenAuthenticatio…