Flood fill算法介绍



如图,类似与dfs比较好理解。

四个方向分别递归就好。

  1. void floodFill(int x, int y, int color) { //三个参数,对应坐标和颜色
  2. area[x][y] = color;
  3. if (x > 0 && area[x - 1][y] == 0) floodFill(x - 1, y, color);//left
  4. if (y > 0 && area[x][y - 1] == 0) floodFill(x, y - 1, color);//up
  5. if (x < MAX_X && area[x + 1][y] == 0) floodFill(x + 1, y, color);//right
  6. if (y < MAX_Y && area[x][y + 1] == 0) floodFill(x, y + 1, color);//down
  7. }

来自为知笔记(Wiz)

附件列表

时间: 2024-10-12 12:25:48

Flood fill算法介绍的相关文章

洪水填充(Flood fill)算法

从一个起始节点开始把附近与其连通的节点提取出或填充成不同颜色颜色,直到封闭区域内的所有节点都被处理过为止,是从一个区域中提取若干个连通的点与其他相邻区域区分开(或分别染成不同颜色)的经典算法. 因为其思路类似洪水从一个区域扩散到所有能到达的区域而得名.在GNU Go和扫雷中,Flood Fill算法被用来计算需要被清除的区域. 洪水填充算法接受三个参数:起始节点,目标节点特征和针对提取对象要执行的处理. 目前有许多实现方式,基本上都显式的或隐式的使用了队列或者栈. 洪水填充算法实现最常见有四邻域

USACO The Castle(flood fill)

题目请点我 题解: 这道题真的好蛋疼啊,首先题意不好理解,搞了半天复杂的要死,有那么多要求,还要求那么多东西,做到一半都不想做了...感觉没什么技术含量,还做起来死费劲儿.但是强迫症非得按顺序做题啊,最后还是一点点把它给调出来了,说什么flood fill,其实也就是那么回事,没什么算法上的技巧,就是见招拆招的感觉... 题意搞懂再做题,题意,不谢! 第一步:根据他的规则把房间画出来,遍历一遍把每个节点四面的墙给补上: 第二步:深搜: 目的1:记录深搜的次数,房间数: 目的2:记录深搜的深度,最

SSOJ 2316 面积【DFS/Flood Fill】

题目描述 编程计算由“1”号围成的下列图形的面积.面积计算方法是统计1号所围成的闭合曲线中点的数目. 如图所示,在10*10的二维数组中,“1”围住了15个点,因此面积为15. 题目大意:对于给定的10*10的01矩阵,请问有多少个0被1包围了?(包围是指不能由上下左右通向边缘)本文来源于OIER博客,原文出处:http://www.oier.cc/ssoj2316%E9%9D%A2%E7%A7%AF/ 解题思路 图形学中Flood Fill是满水法填充,是用来填充区域的.就好比在一个地方一直到

733. Flood Fill 简单型染色问题

[抄题]: An image is represented by a 2-D array of integers, each integer representing the pixel value of the image (from 0 to 65535). Given a coordinate (sr, sc) representing the starting pixel (row and column) of the flood fill, and a pixel value newC

CodeForces - 1114D Flood Fill (区间dp)

You are given a line of nn colored squares in a row, numbered from 11 to nn from left to right. The ii-th square initially has the color cici. Let's say, that two squares ii and jj belong to the same connected component if ci=cjci=cj, and ci=ckci=ck 

【数据结构&amp;&amp;算法系列】KMP算法介绍及实现(c++ &amp;&amp; java)

KMP算法如果理解原理的话,其实很简单. KMP算法简介 这里根据自己的理解简单介绍下. KMP算法的名称由三位发明者(Knuth.Morris.Pratt)的首字母组成,又称字符串查找算法. 个人觉得可以理解为最小回溯算法,即匹配失效的时候,尽量少回溯,从而缩短时间复杂度. KMP算法有两个关键的地方,1)求解next数组,2)利用next数组进行最小回溯. 1)求解next数组 next数组的取值只与模式串有关,next数组用于失配时回溯使用. 在简单版本的KMP算法中,每个位置 j 的 n

【算法】表达式求值--逆波兰算法介绍

逆波兰算法介绍 假定给定一个只 包含 加.减.乘.除,和括号的算术表达式,你怎么编写程序计算出其结果. 问题是:在表达式中,括号,以及括号的多层嵌套 的使用,运算符的优先级不同等因素,使得一个算术表达式在计算时,运算顺序往往因表达式的内容而定,不具规律性. 这样很难编写出统一的计算指令.使用逆波兰算法可以轻松解决.他的核心思想是将普通的中缀表达式转换为后缀表达式. 转换为后缀表达式的好处是:1.去除原来表达式中的括号,因为括号只指示运算顺序,不是完成计算必须的元素.2.使得运算顺序有规律可寻,计

BWT 压缩解压缩算法介绍 poj 1147

poj上1147题, 题意:任意一个长度为N的字符串,循环左移一个字符长度,这样形成N个新字符串,将这N个字符串按字典顺序排序,从上到下取得排序后的每行最后一列的的所有字符,求排序后的第一行字符串? 举个简单例子: 原串为: 0 0 0 1 1 那么循环左移排序后的矩阵为: 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 0 那么我们得到最后列的字符串为: 1 0 0 1 0 现在我们只知道最后列的字符串 1 0 0 1 0,让我们求循环左移排序后

联合人脸检测、校准算法介绍

联合人脸检测.校准算法介绍 人脸检测(detection)在opencv中早就有直接能拿来用的haar分类器,基于Viola-Jones算法.但是毕竟是老掉牙的技术,Precision/Recall曲线渣到不行,在实际工程中根本没法给boss看,作为MSRA脑残粉,这里介绍一种MSRA在14年的最新技术:下载   [ECCV 2014] Joint Cascade Face Detection and Alignment.这篇文章直接在30ms的时间里把detection和alignment都给