【题目描述】

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

【输入】

10×10的图形。

【输出】

输出面积。

【输入样例】

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
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define N 11
using namespace std;
int a[N][N];
int vis[N][N];
int dir[4][2] = { {-1,0},{1,0},{0,-1},{0,1} };
int cnt = 0;
struct node {int x;int y;
}q[200];
void bfs(int x0, int y0)
{a[x0][y0] = 1;vis[x0][y0] = 1;int head = 1, tail = 1;q[tail].x = x0;q[tail].y = y0;tail++;while (head < tail){int x = q[head].x;int y = q[head].y;for (int i = 0; i < 4; i++){int nx = x + dir[i][0];int ny = y + dir[i][1];if (1 <= nx && nx <= 10 && 1 <= ny && ny <= 10 && a[nx][ny] == 0 && vis[nx][ny] == 0){vis[nx][ny] = 1;a[nx][ny] = 1;q[tail].x = nx;q[tail].y = ny;tail++;}}head++;}
}
void bfs_cnt(int x0, int y0)
{vis[x0][y0] = 1;cnt++;int head = 1, tail = 1;q[tail].x = x0;q[tail].y = y0;tail++;while (head < tail){int x = q[head].x;int y = q[head].y;for (int i = 0; i < 4; i++){int nx = x + dir[i][0];int ny = y + dir[i][1];if (1 <= nx && nx <= 10 && 1 <= ny && ny <= 10 && a[nx][ny] == 0 && vis[nx][ny] == 0){vis[nx][ny] = 1;q[tail].x = nx;q[tail].y = ny;tail++;cnt++;}}head++;}
}
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 && vis[i][j] == 0)bfs_cnt(i, j);cout << cnt << endl;return 0;
}

喜欢这篇文章的小伙伴们不要忘了关注我呀!

1359 信息学奥赛一本通 围成面积相关推荐

  1. 信息学奥赛一本通 1359:围成面积

    [题目链接] ybt 1359:围成面积 [题目考点] 1. 搜索:连通块问题 [解题思路] 解法1:遍历外圈 遍历整个地图的外圈(第1行.第1列.第10行,第10列),从外圈所有标记为0的位置开始搜 ...

  2. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  3. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  4. 信息学奥赛一本通在线提交地址

    信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...

  5. 《信息学奥赛一本通提高篇》第6章 组合数学

    例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...

  6. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  7. 信息学奥赛一本通(2032:【例4.18】分解质因数)

    2032:[例4.18]分解质因数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 582     通过数: 376 [题目描述] 把一个合数分解成若干个质因数乘积 ...

  8. ybt1359: 围成面积

    1359:围成面积 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6090 通过数: 2797 [题目描述] 编程计算由"*"号围成的下列图形的面积.面积计算 ...

  9. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

最新文章

  1. 2021年大数据Hive(十一):Hive调优
  2. leetcode-155 最小栈
  3. 【Qt】Qt5.x移植后的环境配置(imx6)
  4. Java学习总结:24
  5. linux守护进程的创建
  6. 大家都纷纷指出了 wp7 的优点 …
  7. 使用 dotnet watch 开发 ASP.NET Core 应用程序
  8. Pytorch cifar10离线加载二进制文件
  9. tomcat服务自动关闭_windows10系统关闭自动更新服务
  10. 电子邮件传输算法-Base64
  11. visio 绘图矢量图素材网站
  12. 「超级右键」Mac上最强的右键菜单工具,让你效率飞起!
  13. AB32VG1开发板学习(2)GPIO,多线程点灯
  14. 马化腾致信合作伙伴:灰度法则的七个维度
  15. 设置Button图片位置
  16. 自己动手刷原生android系统
  17. 标准正态分布+标准正态分布概率表+分布函数+积分
  18. AndroidStudio中虚拟机的联网问题
  19. matlab 多子图_matlab 多子图的绘画
  20. [MySQL免安装版本] 下载、配置、启动、密码修改

热门文章

  1. 【工程源码】CYUSB3014芯片使用EEPROM无法下载固件说明
  2. C语言动态内存开辟详解(malloc,calloc,realloc,free,柔型数组)
  3. tf.Keras.Model类总结
  4. Ambarella S6L55M 性能测试之内存篇
  5. Python:求列表的最大数以及下标
  6. 【ceph】ceph分布式存储MDS(各种状态、源码)
  7. JS Event Propagation (bubbling and capture)
  8. **懒得给孩子讲故事怎么办**
  9. FileNotFoundException: http:\localhos46087125.jpg (文件名、目录名或卷标语法不正确
  10. 比较线程子进程 占用的内存情况