当前位置: 首页 > news >正文

flood_fill 算法|图形渲染

flood fill 算法常常用来找极大连通子图,这是必须掌握的基本算法之一!

图形渲染

在这里插入图片描述
在这里插入图片描述

算法原理

  • 我们可以利用DFS遍历数组
  • 把首个数组的值记为color,然后上下左右四个方向遍历二维数组数组
  • 如果其他方块的值不等于color 或者越界就剪枝 return

代码实现

class Solution {
public:int row,col;int color;bool visted[50][50];int dx[4]={0,0,-1,1};int dy[4]={-1,1,0,0};void dfs(vector<vector<int>>& image, int sr, int sc, int new_color){if( sr>= row || sr < 0 || sc >= col || sc < 0||image[sr][sc] != color||visted[sr][sc] ){return ;}image[sr][sc] = new_color;visted[sr][sc] = true;for(int i = 0; i< 4; i++){dfs(image,sr+dx[i],sc+dy[i],new_color);}}vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int new_color) {color = image[sr][sc];row = image.size();col = image[0].size();dfs(image,sr,sc,new_color);return image;}
};

魔鬼细节

dx dy数组用来干嘛的?

dx dy可以看作 x方向 和 y 方向的向量,sr+dx[i],sc+dy[i] 用来合成四个方向。
我们输入 dx 和 dy 数组时只需要对应位置只有一个零,1和-1的先后顺序不用管
dx={0,1,-1,0} ;
dy = {-1,0,0,1};
这个数组合成的涵义是 y 方向先 -1 ,x方向 +1 ,x方向-1,y方向+1

visted数组用来干嘛的?

为了避免往复走
从逻辑上每个节点只需要走一次即可

http://www.lryc.cn/news/340346.html

相关文章:

  • Promise简单概述
  • 【Java集合进阶】数据结构(平衡二又树旋转机制)数据结构(红黑树、红黑规则、添加节点处理方案详解)
  • 富文本在线编辑器 - tinymce
  • 从汇编代码理解数组越界访问漏洞
  • skynet 使用protobuf
  • Vue Router 4 与 Router 3 路由配置与区别
  • python借助elasticsearch实现标签匹配计数
  • Yolo-world+Python-OpenCV之摄像头视频实时目标检测
  • vue-treeselect 的基本使用
  • Vue(二)
  • Python基于深度学习的车辆特征分析系统
  • 推理还原的干货
  • 【Redis 神秘大陆】006 灾备方案
  • 【Java基础】17.异常处理
  • 【python】flask结合SQLAlchemy,在视图函数中实现对数据库的增删改查
  • APIGateway的认证
  • MacOS Github Push项目 精简版步骤
  • Eclipse的基本使用讲解(建项目,建包,建类,写代码(基本语法))新手入门必备
  • 3D模型处理的并行化
  • 盲人安全导航技巧:科技赋能让出行更自如
  • 问,由于java存在性能上,以及部分功能上的缺点,请问如何正确使用C,C++,Go,这三个语言,提升Java Web项目的性能?
  • 【信号与系统 - 9】傅里叶变换的性质习题
  • C#探索之路基础夯实篇(5):语法糖概念解析
  • SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比
  • 深入理解汇编:平栈、CALL和RET指令详解
  • DP4 最小花费爬楼梯
  • OpenXR API概览与核心组件解析
  • 安装指定版本的ant-design-vue和指定版本的@ant-design/icons-vue 图标组件包
  • Zynq7000系列中的休眠模式
  • 在redhat7/8平台上部署ELK7.17.18的技术方案