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

网站添加友情链接网络推广营销工具

网站添加友情链接,网络推广营销工具,网站站点怎么做,网络公司主要经营哪些业务题目:130. 被围绕的区域 三种解法: C版本:采用的是遍历所有元素,如果是’O’,则进行bfs。 JAVA版本:遍历所有边上的元素,并采用额外的状态数组来标记情况 GO版本:遍历所有边上的元素…

题目:130. 被围绕的区域

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

三种解法:
C++版本:采用的是遍历所有元素,如果是’O’,则进行bfs。
JAVA版本:遍历所有边上的元素,并采用额外的状态数组来标记情况
GO版本:遍历所有边上的元素,但是在原数组中进行状态标记。

C++版本:

class Solution {
public:typedef pair<int,int> PII;int fx[4]={0,0,-1,1};int fy[4]={1,-1,0,0};void bfs(int X,int Y,vector<vector<char>>& board,vector<vector<bool>>& sta){//采用广度优先搜索bfsqueue<PII> qu;// 记录当前遍历的所有‘O’vector<PII> v;// 初始化qu.push({X,Y});sta[X][Y]=true;// 判断是否被围住bool flag=true;int n=board.size(),m=board[0].size();// 遍历队列quwhile(qu.size()){PII tmp=qu.front();qu.pop();v.push_back(tmp);// 遍历可能的领居节点for(int i=0;i<4;i++){int x=tmp.first+fx[i];int y=tmp.second+fy[i];if(x<0||y<0||x>=n||y>=m) continue;if(board[x][y]=='X'||sta[x][y]==true) continue;// 如果当前节点为‘O',没遍历过,且在边上,那说明这次bfs遍历的所有'O'都不会被围住if(x==0||x==n-1||y==0||y==m-1){flag=false;}qu.push({x,y});sta[x][y]=true;}}// 没有被围住if(flag==false) return;// 被围住for(auto x:v){board[x.first][x.second]='X';}}void solve(vector<vector<char>>& board) {int n=board.size(),m=board[0].size();// 状态数组vector<vector<bool>> sta(n,vector<bool>(m,false));// 遍历所有元素for(int i=0;i<board.size();i++){for(int j=0;j<board[0].size();j++){// 没有被遍历过,且为‘O',并且不在边上if(sta[i][j]!=true&&board[i][j]=='O'&&i!=0&&j!=0&&i!=n-1&&j!=m-1){bfs(i,j,board,sta);}}}}
};

JAVA版本:

class Solution {void dfs(int x,int y,char[][] board,boolean[][] sta){if(x<0 ||y<0||x>=board.length||y>=board[0].length) return ;// 遍历过if(sta[x][y]==true) return;// 不为‘O'if(board[x][y]=='X') return ;sta[x][y]=true;dfs(x-1,y,board,sta);dfs(x+1,y,board,sta);dfs(x,y+1,board,sta);dfs(x,y-1,board,sta);}public void solve(char[][] board) {int n=board.length,m=board[0].length;// 状态数组boolean[][] sta=new boolean[n][m];// 遍历所有边上的节点for(int j=0;j<m;j++){if(sta[0][j]==false && board[0][j]=='O'){dfs(0,j,board,sta);}if(sta[n-1][j]==false && board[n-1][j]=='O'){dfs(n-1,j,board,sta);}}for(int i=0;i<n;i++){if(sta[i][0]==false && board[i][0]=='O'){dfs(i,0,board,sta);}if(sta[i][m-1]==false && board[i][m-1]=='O'){dfs(i,m-1,board,sta);}}// 将围住的节点都改为‘X’for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(sta[i][j]==false){board[i][j]='X';}}}}
}

GO版本:

func solve(board [][]byte)  {n,m:=len(board),len(board[0])// 遍历所有边上的节点for i:=0;i<n;i++ {dfs(i,0,board)dfs(i,m-1,board)}for j:=0;j<m;j++ {dfs(0,j,board)dfs(n-1,j,board)}for i:=0;i<n;i++ {for j:=0;j<m;j++ {// 没有被围住if board[i][j]=='C' {board[i][j]='O'}else if board[i][j]=='O' {// 被围住board[i][j]='X'}}}
}
func dfs(x,y int,board [][]byte) {if x<0||y<0||x>=len(board)||y>=len(board[0]) || board[x][y]!='O' {return }// 将没有被围住的‘O’都改为‘C'board[x][y]='C'dfs(x-1,y,board);dfs(x+1,y,board);dfs(x,y-1,board);dfs(x,y+1,board);
}
http://www.dtcms.com/a/532369.html

相关文章:

  • 做网站怎么添加关键词网站开发公司报价单模板
  • 山西太原做企业网站建设的公司松原建设局网站
  • HTTP的get请求和post请求的联系和区别
  • 004-Spring AI Alibaba Chat Memory 功能完整案例
  • 用模板网站做h5宣传页多少钱鄂尔多斯seo
  • 人工智能数学
  • Jenkins 从0基础到有点基础——如何安装
  • 我在高职教STM32(新06)——蜂鸣器鸣响实验
  • STM32实现低功耗管理使用配置知识梳理笔记
  • 8-SpringCloud-服务网关 Gateway-高级特性Predicate
  • 从语法糖到引擎实现——JavaScript Class 完整指南(2025 版)
  • 建设网站导航做电商网站必需知道qc
  • STM32 系统定时器(精准延迟)
  • 千问图像编辑Qwen-image-Edit及Qwen-image-Edit-2509(编辑文字/外观编辑/语义编辑)
  • 静态代理模式
  • 探索有效文章生成的技巧与方法
  • 库的认识和制作
  • 在线做英语题的网站html5手机网站返回顶部
  • 开源项目详解3-ParserSpel
  • 系统性学习C++-第八讲-vector类
  • 什么是Nginx?:掌握高性能 Web 服务器核心技术
  • 江西网站开发公司模板网婚纱
  • 快速搭建Docker私有仓库指南
  • 网站禁用右键wordpress mycred汉化
  • 音视频处理(二): 一文讲清楚音频处理流程:采样、压缩和播放
  • 基于单片机的篮球比赛计时与比分控制系统设计
  • C++容器set
  • 网站建设主机耗电量怎么写代码自己制作网站
  • 超越低功耗:TMS320C6000 DSP的能效架构设计与IoT节点部署实践
  • 西安网站开发工资首都之窗门户网站首页