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

著名的网站制作公司展示设计公司有哪些

著名的网站制作公司,展示设计公司有哪些,网站开发工具.晴天娃娃,深圳网站建设哪个文章目录 **一、Floodfall 算法的概述****二、深度优先搜索#xff08;DFS#xff09;和广度优先搜索#xff08;BFS#xff09;在 Floodfall 算法中的应用****三、算法的基本原理****四、应用场景** 一、Floodfall 算法的概述 Floodfall 算法通常用于解决与区域填充、图的… 文章目录 **一、Floodfall 算法的概述****二、深度优先搜索DFS和广度优先搜索BFS在 Floodfall 算法中的应用****三、算法的基本原理****四、应用场景** 一、Floodfall 算法的概述 Floodfall 算法通常用于解决与区域填充、图的遍历等相关的问题。它的中文名字洪水灌溉顾名思义它的核心思想是从一个起始点开始像洪水一样蔓延直到满足特定的条件或覆盖整个目标区域。 Floodfall 算法在实现过程中常常会基于深度优先搜索DFS和广度优先搜索BFS的思想。 二、深度优先搜索DFS和广度优先搜索BFS在 Floodfall 算法中的应用 深度优先搜索DFS在 Floodfall 算法中会沿着一条路径尽可能深地探索下去直到无法继续然后回溯。这种方式在某些情况下能够快速找到较深的区域但可能会忽略一些较近但隐藏较深的区域。 例如在一个迷宫中如果使用 DFS 进行 Floodfall 式的探索可能会先深入一条复杂的长通道而错过一些就在入口附近但需要绕一点路才能到达的区域。 广度优先搜索BFS则是逐层地向外扩展先访问距离起始点近的节点再逐步扩展到更远的节点。在 Floodfall 算法中BFS 能确保先填充距离起始点较近的区域填充的顺序更加有序和可预测。 比如在地图填充中使用 BFS 进行 Floodfall 操作会先填充起始点周围的区域再逐渐向外扩散。 三、算法的基本原理 Floodfall 算法一般会使用某种数据结构如队列或栈来存储待处理的节点。从起始节点出发将其相邻的未访问节点加入数据结构然后依次处理这些节点不断扩展填充区域。 四、应用场景 图像处理中的颜色填充。游戏地图中的区域探索。 下面是一个使用 C实现的简单 Floodfall 算法示例代码用于填充二维矩阵中的一个区域分别展示了基于 DFS 和 BFS 的实现方式 #include iostream #include stack #include queue// 定义矩阵的大小 const int ROWS 10; const int COLS 10;// 方向数组用于遍历相邻节点 const int dx[] { -1, 1, 0, 0 }; const int dy[] { 0, 0, -1, 1 };// 定义一个结构体来表示节点 struct Node {int x;int y; };// 基于 DFS 的 FloodFill 函数 void floodFillDFS(int grid[ROWS][COLS], int startX, int startY, int targetColor, int newColor) {std::stackNode s;Node start;start.x startX;start.y startY;s.push(start);while (!s.empty()) {Node curr s.top();s.pop();int x curr.x;int y curr.y;// 如果当前节点的颜色与目标颜色不同跳过if (grid[x][y]! targetColor) {continue;}// 更改颜色grid[x][y] newColor;// 遍历相邻节点for (int i 0; i 4; i) {int newX x dx[i];int newY y dy[i];// 检查边界if (newX 0 newX ROWS newY 0 newY COLS) {Node next;next.x newX;next.y newY;s.push(next);}}} }// 基于 BFS 的 FloodFill 函数 void floodFillBFS(int grid[ROWS][COLS], int startX, int startY, int targetColor, int newColor) {std::queueNode q;Node start;start.x startX;start.y startY;q.push(start);while (!q.empty()) {Node curr q.front();q.pop();int x curr.x;int y curr.y;// 如果当前节点的颜色与目标颜色不同跳过if (grid[x][y]! targetColor) {continue;}// 更改颜色grid[x][y] newColor;// 遍历相邻节点for (int i 0; i 4; i) {int newX x dx[i];int newY y dy[i];// 检查边界if (newX 0 newX ROWS newY 0 newY COLS) {Node next;next.x newX;next.y newY;q.push(next);}}} }// 打印矩阵 void printGrid(int grid[ROWS][COLS]) {for (int i 0; i ROWS; i) {for (int j 0; j COLS; j) {std::cout grid[i][j] ;}std::cout std::endl;} }int main() {int grid[ROWS][COLS] {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 1, 1, 1, 1, 1, 1, 1, 1, 0},{0, 1, 0, 0, 0, 0, 0, 0, 1, 0},{0, 1, 0, 1, 1, 1, 1, 0, 1, 0},{0, 1, 0, 1, 0, 0, 1, 0, 1, 0},{0, 1, 0, 1, 0, 0, 1, 0, 1, 0},{0, 1, 0, 1, 1, 1, 1, 0, 1, 0},{0, 1, 0, 0, 0, 0, 0, 0, 1, 0},{0, 1, 1, 1, 1, 1, 1, 1, 1, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};std::cout 原始矩阵 std::endl;printGrid(grid);std::cout 基于 DFS 填充后的矩阵 std::endl;floodFillDFS(grid, 1, 1, 1, 2);printGrid(grid);std::cout 基于 BFS 填充后的矩阵 std::endl;floodFillBFS(grid, 1, 1, 2, 3);printGrid(grid);return 0; }在上述代码中我们分别实现了基于 DFS 和 BFS 的 Floodfall 算法用于填充二维矩阵中的指定区域。
http://www.w-s-a.com/news/411137/

相关文章:

  • 怎么样百度搜到自己的网站加强社区网站建设
  • 建设网站所需技术wordpress延时加载js
  • 网站建设沈阳搜云seo
  • 怎么申请免费的网站空间微信公众平台注册收费吗
  • 东营网站搭建最基本的网站设计
  • 网站建设技术的发展最近的国际新闻大事
  • 德州有名的网站建设公司网站如何做引流
  • 建设一个收入支出持平的网站网络推广计划书格式
  • 什么是网站黑链全球新冠疫苗接种率
  • 网站开发 chrome gimp网站不备案做seo没用
  • 织梦校园招生网站源码沪佳哪个好
  • 建设企业网站可信度软件产品如何做网站推广
  • 网站建设企业号助手贵阳景观设计公司
  • 网站开发第三方建设银行个人网站显示不了
  • 无锡兼职做网站郑州网站建设搜索优化
  • iis禁止通过ip访问网站品牌策划案例ppt
  • 电子商务网站建设实习seo黑帽优化
  • 如何做好网站建设销售闸北集团网站建设
  • 重庆装饰公司北京官网seo推广
  • 深圳网站设计灵点网络品牌网站充值接口
  • 建设书局 网站国内国际时事图片
  • 成都 网站建设培训学校屏蔽wordpress自带编辑器
  • 公司网站制作工作室中天建设集团有限公司第五建设公司
  • 网站的网页设计毕业设计苏州宣传册设计广告公司
  • 商城网站优化方案注册公司制作网站
  • 政务服务网站建设整改报告wordpress的导航代码
  • 图片素材网站建设做教育网站用什么颜色
  • 快站淘客中转页wordpress商业插件
  • 可信网站网站认证免费软件下载网站免费软件下载网站
  • 小学生网站制作最新域名网站