扫描统计是程序设计拓展求和的一个基本课题。

有一条封闭曲线划定的地图,界定曲线上的点用“1”表示,曲线内外的点用“0”表示试实施图形点扫描,统计地图的面积(即“封闭”曲线内的“0”点数)。

1、设计要点

要统计用“1”标识的封闭曲线内“0”点的点数,关键在于如何识别哪些“0”点在封闭曲线内,哪些“0”点在封闭曲线外。

试对封闭曲线外的“0”点实施“扩散传染”处理,处理成“2”点,以与曲线内的“0”点相区别。考虑到连续曲线可能复杂的弯曲变化,用简单一次枚举检测难以区分曲线内与外的“0”,可
以把曲线外的“0”通过多次“扩散传染”逐个变为“2”,因为封闭曲线隔离使得曲线内的“0”保持不变。
核心思想
(1)四周边上的“0”无疑在曲线外,变为“2”。
(2)凡与“2”相邻的“0”点通过“传染”变为“2”。即判断每一个“0”点,若它的上下左
右元素中有某一个为“2”点,即被扩散传染为“2”
(3)约定扫描x
y(即图中点的个数)次。设置变量w,每次扫描前,w=0;凡有扩散传染
发生,w=1。每次扫描后检验,如果w=0,表示该次扫描没有传染发生,即停止。
(4)统计“0”的点数即为所求封闭曲线的面积。*

代码:`

#include <iostream>
#define maxn 666int n, m;
void  solve(int a[][maxn]) {n--;m--;long t = n * m ;int w;for (int i = 0; i <= m; i++) { //m为列数 ,把边上的0变成2if (a[0][i] == 0)a[0][i] = 2;if (a[n][i] == 0)a[n][i] = 2;}for (int i = 1; i < n; i++) { //n为行数 ,把边上的0变成2(因为前面已经把两行给初始化了if (a[i][0] == 0)a[i][0] = 2;if (a[i][m] == 0)a[i][m] = 2;}for (int k = 1; k < t; k++) {w = 0;for (int i = 1; i < n ; i++)for (int j = 1; j < m ; j++)if ((a[i - 1][j] == 2 || a[i + 1][j] == 2 || a[i][j - 1] == 2 || a[i][j + 1] == 2) && a[i][j] == 0) {a[i][j] = 2;w = 1;}if (w == 0) //表明整个满足条件的点都没了break;}
}int main() {int map[maxn][maxn];int ans = 0;scanf("%d%d", &n, &m);for (int i = 0; i < n; i++)for (int j = 0; j < m; j++) {int a;scanf("%d", &a);map[i][j] = a;}solve(map);for (int i = 0; i <= n; i++) {for (int j = 0; j <= m ; j++) {printf("%d ", map[i][j]);if (map[i][j] == 0)ans++;}printf("\n");}printf("%d\n", ans);return 0;
}
/*12
12
0 0 0 1 0 0 0 1 0 1 1 0
0 1 1 0 1 0 1 0 1 0 0 1
1 0 0 0 0 1 0 0 0 0 1 1
1 0 0 0 0 0 0 0 0 1 0 0
0 1 0 0 0 1 0 0 0 0 1 0
1 0 0 0 1 0 1 1 0 0 0 1
0 1 0 1 0 0 0 1 0 0 1 0
0 1 0 1 0 0 1 0 0 1 0 0
1 0 0 0 1 0 0 1 0 0 1 0
0 1 0 0 0 1 0 0 1 0 0 1
0 0 1 0 0 1 0 0 1 0 1 0
0 0 0 1 1 0 0 0 0 1 0 0
*/

地图处理(dfs算法)相关推荐

  1. DFS算法原理及其具体流程,包你看一遍就能理解

    目录 写在前面 DFS算法 所解决的问题 所需要的数据结构 代码结构及解释 方法一:递归 解释 递归dfs总结 方法二:栈 解释 栈dfs总结 写在前面 因为楼主也是刚开始刷leetcode,所以下面 ...

  2. 深度优先搜索dfs算法刷题笔记【蓝桥杯】

    其实网上已经有不少dfs的算法笔记,但我之所以还再写一篇,主要是因为我目前见到的笔记,都有些太偏向理论了. 对于基础薄弱的或是没有基础的人(like me),有点不合适,因为看了,也不能说自己会了. ...

  3. 【2018.07.29】(深度优先搜索/回溯)学习DFS算法小记

    参考网站:https://blog.csdn.net/ldx19980108/article/details/76324307 这个网站里有动态图给我们体现BFS和DFS的区别:https://www ...

  4. Dijkstra算法修改 + dfs算法的总结

    Dijkstra + dfs 参考Dijkstra算法的改进 前提:Dijkstra算法的思路和实现请看最短路径算法之二:Dijkstra总结 介绍 Dijkstra算法和dfs算法的结合主要解决最短 ...

  5. 经典迷宫问题(C++)简单DFS算法

    经典迷宫问题(C++) *给出一个起点S 输入地图 '.' 代表可以走 ' '代表墙壁不能走 'T'代表终点 question:判断是否能够能从到达终点 (不要求最短路径) thinking and ...

  6. UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法

    UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法 DFS方法基础 邮票问题 这部分的主要目标是建立求解整数规划的方法,早期解决整数规划需要穷举,后来人们把搜索技术应用到整数规划中,极大 ...

  7. boost::graph模块实现DFS算法的测试程序

    boost::graph模块实现DFS算法的测试程序 实现功能 C++实现代码 实现功能 boost::graph模块实现DFS算法的测试程序 C++实现代码 #include <boost/g ...

  8. C语言递归实现深度优先搜索DFS算法(附完整源码)

    C语言递归实现DFS算法 完整Graph.h 头文件 完整Graph.c 源文件文件 完整dfs_recursive.c 源文件(main测试函数) 完整Graph.h 头文件 #include &l ...

  9. c语言dfs算法,DFS算法源程序

    /* dfs算法 */ #include #include #include #include /* 函数结果状态代码 */ #define   True     1 #define   False ...

  10. JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计

    JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计 看到了这样的一道题目,还挺有意思,可以通过不同的算法设计来求解. 话说大诗人李白,一生好饮.一日,他提着酒壶,从家里出来,酒壶中有酒2斗.他边 ...

最新文章

  1. 两岸MVP强强联手--最硬Windows Server 2008达人
  2. vue 页面跳转的两种方式
  3. alteon ad3 配置
  4. leetcode 滑动窗口小结 (一)
  5. 漫画:什么是自动驾驶?
  6. Confluence 6 目录中的数据库
  7. Flutter 技术介绍
  8. java生成dump文件_dump文件生成和分析查看
  9. cisco fabricpath 功能介绍
  10. Windows HTTP服务(WinHTTP)介绍
  11. QQ应用自动登录最小化功能
  12. Python基于cq-http协议端,使用nonebot2框架制作属于自己的智能机器人
  13. mysql远程操作权限(navicat for mysql)
  14. Linux网站服务之部署Wordpress教程
  15. 超多版式运用手法!128张让你灵感爆发的海报设计
  16. 腾讯云带宽价格表(包年包月/按量计费/流量价格)
  17. 21天减肥法反弹案例-987减肥网
  18. 终于有人把线性回归讲明白了
  19. 使用C++和Boost库写一个自己的脚本引擎
  20. chrome manifest v3 api大全(持续更新中)

热门文章

  1. visual studio解决方案是什么?
  2. 《数字图像处理》 笔记
  3. python PyQt5 QVBoxLayout 垂直布局管理
  4. Visual Studio 2013或2015工程属性中包含目录和库目录的添加方法,附加依赖项,相对路径
  5. 给IDEA给类和方法添加注解
  6. 初学__Python——Python 可重用结构:Python模块
  7. Coprime Sequence 思维 gcd 删一个数
  8. gtp6 linux 启动_Win10更新后导致双系统(LinuxWindows)开机引导失败出现grub rescue的修复办法...
  9. python工资津贴的计算和排序-python sort、sorted高级排序技巧
  10. python获取方法的装饰方法_python – 在一个方法上得到装饰器名称的内省?