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

FloodFill算法——图像渲染

文章目录

  • 题目解析
    • 题目内容解读
  • 算法解析
  • 代码解析

题目解析

在这里插入图片描述

首先我们先来看看题目:图像渲染

题目内容解读

我们来解读一下题目内容这个题目的意思其实就是有一个如下图所示的二维矩阵
在这里插入图片描述
这个题目的意思在这类题目中也是非常标准的,就是给我们一个二维数组然后会再给我们一个坐标要求是我们以这个坐标为起点向四周延申,在这个过程中只有等于我们初始坐标这个值然后让这些值赋值为题目要求的值即可

算法解析

面对这个题目其实我们有两种解决思路,第一种就是BFS,第二种就是DFS,而我们现在讲的是BFS算法,那么BFS应该怎么办呢?我们可以,以题目要求的坐标为七点向四周延申,在延深过程中,我们只需要对每个符合要求的节点设置一个标志表明不会连续访问这个节点两次即可。那么有了这个思路我们的代码应该怎么办呢

代码解析

class Solution {
public:int dx[4]={0,-1,0,1};int dy[4]={1,0,-1,0};typedef pair<int,int>PII;vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {int prev=image[sr][sc];int m=image.size();int n=image[0].size();queue<PII>q;q.push({sr,sc});if(prev==color){return image;//当题目要求设置的颜色跟我们初始位置的颜色相同的时候直接返回image即可。因为//可以转换的是跟新的颜色值相同的位置,而不可以转换的无论其与color是否相同其实都没有影响了。}while(q.size()){//宽搜的老朋友队列登场auto[a,b]=q.front();q.pop();image[a][b]=color;for(int i=0;i<4;i++){//从这个节点位置向四周延深int x=a+dx[i];int y=b+dy[i];if(x<m&&y<n&&x>=0&&y>=0&&image[x][y]==prev){//当遍历到的这个位置等于初始节点的位置的值的时候就将其放入队列。q.push({x,y});}}}return image;}
};

从上面对于算法的解析种我们其实应该是对每一个遍历到的节点加一个标志位的但是这个题目不用因为这个题目的主要要求是,符合条件的节点的值全部转换为题目要求的值因此我们可以发现即使没有标记位只需要记录初始位置的值然后逐个匹配即可。

相关文章:

  • 第十二届蓝桥杯省赛CC++ 研究生组
  • ubuntu2310制作离线源
  • GraphPad Prism 10:一站式数据分析解决方案
  • Linux设备驱动开发 - 三色LED呼吸灯分析
  • 算法体系-15 第十五节:贪心算法(下)
  • Python之Web开发中级教程----ubuntu安装MySQL
  • 【C语言基础篇】内存处理函数(二)memove的介绍及模拟实现
  • WebClient上载文件——实现将本地文件同步到远端服务器上
  • 是德科技keysight N1912A双通道功率计
  • jvm提供的远程调试 简单使用
  • docker基础(七)之docker start/stop/kill/restart/pause/unpause
  • 两款新春烟花代码-烟花模拟器网站源码
  • DashScope - 阿里模型服务灵积
  • Springboot+vue的四川美食分享网站+数据库+报告+免费远程调试
  • 【群晖】Docker Compose部署 Emby Server
  • java8 Stream Pipelines 浅析
  • JavaScript对象详解
  • JS字符串转数字方法总结
  • leetcode98. Validate Binary Search Tree
  • node.js
  • react 代码优化(一) ——事件处理
  • XForms - 更强大的Form
  • 动态规划入门(以爬楼梯为例)
  • 欢迎参加第二届中国游戏开发者大会
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 开源地图数据可视化库——mapnik
  • 前端性能优化——回流与重绘
  • 三栏布局总结
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 我们雇佣了一只大猴子...
  • (175)FPGA门控时钟技术
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (十三)Flask之特殊装饰器详解
  • (转)linux 命令大全
  • (转)程序员疫苗:代码注入
  • (状压dp)uva 10817 Headmaster's Headache
  • .net core使用ef 6
  • .NET大文件上传知识整理
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET设计模式(11):组合模式(Composite Pattern)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • []error LNK2001: unresolved external symbol _m
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [APIO2012] 派遣 dispatching
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [C]整形提升(转载)
  • [dart学习]第四篇:函数
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件
  • [Google Guava] 1.1-使用和避免null
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统