苏州网站建设点一点网站首页大图轮播

张小明 2026/3/2 18:18:23
苏州网站建设点一点,网站首页大图轮播,微信自己开发小程序,微信h5页面制作免费自动泊车 2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录#xff5c;机考题库 算法考点详解 题目描述 考友回忆版:有一个停车场#xff0c;停车场入口位置[0,0]为0#xff0c;你要…自动泊车2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录机考题库 算法考点详解题目描述考友回忆版:有一个停车场停车场入口位置[0,0]为0你要停的位置为[m,n],停车场位置可能是0或者1是零的位置车可以通行是1的位置不可以通行车在停车场内可以只能往四周移动(上下左右)要求找出从入口到目标车位的最短路径如果无法到达就返回-1.输入描述输入 m n,目标车位位置输入 row ,col, 停车场大小接下来输入row行每行为停车场的位置信息。输出描述输出一个整数如果能到到达目标车位输出最短路径不能到达输出-1.用例1输入1 1 3 3 0 0 0 0 0 0 0 0 0输出2题解思路BFS,模板题这道题就是经典BFS模板题借助BFS的一个特性初次访问到某个位置肯定是最小路径。在进行BFS模拟过程中如果第一次到达m n位置可直接退出同时可以利用上面那个特性进行剪枝已经访问过的位置不再入栈。BFS基本逻辑如下定义visited初始化所有位置为-1表示未访问过。定义队列初始将{0,0}放入队列。接下来使用队列模拟BFS向四周扩散每次取出队列队首元素{x,y}向四周扩散得到{newX,newY}按照下面逻辑处理:newX 0 || newY 0 || newX row || newY col: 超过边界异常情况剪枝grid[newX][newY] 1: 不可通行位置剪枝visited[newX][newY] ! -1: 以访问过位置不再次搜索剪枝。合法情况, {newX,newY}入队并更新visisted[newX][newY] visisted[x][y] 1如果在BFS中遇到{m,n}可提前退出BFS。注意:由于这道题的题目大意时小伙伴口诉回忆的可能有部分地方有差异但总体思路应该没错大家到时候可以灵活修改一下。但是总体思路肯定时没有问题的c#includeiostream #includevector #includestring #include utility #include sstream #includealgorithm #includecmath #includemap #includequeue #includeclimits using namespace std; int bfs(vectorvectorint grid, int m, int n, int row, int col) { // 上下左右 int direct[4][2] {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; // 异常情况细节处理 if (m 0 || n 0 || m row || n col || grid[0][0] 1) { return -1; } if (m 0 n 0) { return 0; } // 记录起点到{i,j}的 最短路径 vectorvectorint visited(row, vectorint(col, -1)); queuepairint,int q; q.push({0, 0}); visited[0][0] 0; while (!q.empty()) { int x q.front().first; int y q.front().second; q.pop(); for (int i 0; i 4; i) { int newX x direct[i][0]; int newY y direct[i][1]; // 合法性检验 if (newX 0 || newY 0 || newX row || newY col) { continue; } // 不可通行 if (grid[newX][newY] 1) { continue; } // bfs特性首次到达的路径长度肯定最小 if (visited[newX][newY] ! -1) { continue; } // 入队 q.push({newX, newY}); visited[newX][newY] visited[x][y] 1; if (newX m newY n) { return visited[newX][newY]; } } } return visited[m][n] -1 ? -1 : visited[m][n]; } int main() { int m,n; cin m n; int row, col; cin row col; vectorvectorint grid(row, vectorint(col)); for (int i 0; i row; i) { for (int j 0; j col; j) { cin grid[i][j]; } } int res bfs(grid, m, n, row, col); cout res; return 0; }JAVAimport java.io.*; import java.util.*; /** * BFS 求从 (0,0) 到 (m,n) 的最短路径 * 0 表示可通行1 表示障碍 */ public class Main { static int bfs(int[][] grid, int m, int n, int row, int col) { // 上下左右方向 int[][] direct {{-1,0},{1,0},{0,-1},{0,1}}; // 异常情况处理 if (m 0 || n 0 || m row || n col || grid[0][0] 1) { return -1; } if (m 0 n 0) { return 0; } // 记录最短路径长度-1 表示未访问 int[][] visited new int[row][col]; for (int i 0; i row; i) { Arrays.fill(visited[i], -1); } Queueint[] queue new LinkedList(); queue.offer(new int[]{0, 0}); visited[0][0] 0; while (!queue.isEmpty()) { int[] cur queue.poll(); int x cur[0], y cur[1]; for (int i 0; i 4; i) { int newX x direct[i][0]; int newY y direct[i][1]; // 边界检查 if (newX 0 || newY 0 || newX row || newY col) continue; // 障碍 if (grid[newX][newY] 1) continue; // 已访问 if (visited[newX][newY] ! -1) continue; visited[newX][newY] visited[x][y] 1; if (newX m newY n) { return visited[newX][newY]; } queue.offer(new int[]{newX, newY}); } } return visited[m][n] -1 ? -1 : visited[m][n]; } public static void main(String[] args) throws Exception { Scanner sc new Scanner(System.in); int m sc.nextInt(); int n sc.nextInt(); int row sc.nextInt(); int col sc.nextInt(); int[][] grid new int[row][col]; for (int i 0; i row; i) { for (int j 0; j col; j) { grid[i][j] sc.nextInt(); } } int res bfs(grid, m, n, row, col); System.out.print(res); } }Pythonimportsysfromcollectionsimportdequedefbfs(grid,m,n,row,col):# 上下左右direct[(-1,0),(1,0),(0,-1),(0,1)]# 异常情况处理ifm0orn0ormroworncolorgrid[0][0]1:return-1ifm0andn0:return0# visited 记录最短距离-1 表示未访问visited[[-1]*colfor_inrange(row)]qdeque()q.append((0,0))visited[0][0]0whileq:x,yq.popleft()fordx,dyindirect:nx,nyxdx,ydyifnx0orny0ornxrowornycol:continueifgrid[nx][ny]1:continueifvisited[nx][ny]!-1:continuevisited[nx][ny]visited[x][y]1ifnxmandnyn:returnvisited[nx][ny]q.append((nx,ny))return-1ifvisited[m][n]-1elsevisited[m][n]defmain():datalist(map(int,sys.stdin.read().split()))idx0m,ndata[idx],data[idx1]idx2row,coldata[idx],data[idx1]idx2grid[]for_inrange(row):grid.append(data[idx:idxcol])idxcolprint(bfs(grid,m,n,row,col))if__name____main__:main()JavaScript/** * 使用 readline 接收 ACM 输入 * BFS 求从 (0,0) 到 (m,n) 的最短路径 * 0 表示可通行1 表示障碍 */use strict;constreadlinerequire(readline);// 创建 readline 接口constrlreadline.createInterface({input:process.stdin,output:process.stdout});constlines[];rl.on(line,line{lines.push(line.trim());});rl.on(close,(){// 将所有输入按空白切分为数字constdatalines.join( ).split(/\s/).map(Number);letidx0;// 目标坐标 (m, n)constmdata[idx];constndata[idx];// 网格行列constrowdata[idx];constcoldata[idx];// 读取网格constgrid[];for(leti0;irow;i){grid.push(data.slice(idx,idxcol));idxcol;}console.log(bfs(grid,m,n,row,col).toString());});/** * BFS 搜索最短路径 * param {number[][]} grid 网格 * param {number} m 目标行 * param {number} n 目标列 * param {number} row 行数 * param {number} col 列数 * returns {number} 最短路径长度无法到达返回 -1 */functionbfs(grid,m,n,row,col){// 上下左右四个方向constdirect[[-1,0],[1,0],[0,-1],[0,1]];// 异常情况处理if(m0||n0||mrow||ncol||grid[0][0]1){return-1;}// 起点就是终点if(m0n0){return0;}// visited 记录从起点到该点的最短距离-1 表示未访问constvisitedArray.from({length:row},()Array(col).fill(-1));// 使用数组模拟队列head 指针避免 shift O(n)constqueue[];lethead0;// 起点入队queue.push([0,0]);visited[0][0]0;// BFS 主循环while(headqueue.length){const[x,y]queue[head];for(const[dx,dy]ofdirect){constnxxdx;constnyydy;// 边界检查if(nx0||ny0||nxrow||nycol)continue;// 障碍物if(grid[nx][ny]1)continue;// 已访问if(visited[nx][ny]!-1)continue;// 更新最短距离visited[nx][ny]visited[x][y]1;// 如果到达目标点直接返回BFS 首次到达即最短if(nxmnyn){returnvisited[nx][ny];}// 入队queue.push([nx,ny]);}}// BFS 结束仍未到达returnvisited[m][n]-1?-1:visited[m][n];}Gopackagemainimport(bufiofmtos)// 节点结构体表示网格中的一个点typeNodestruct{x,yint}/** * BFS 求从 (0,0) 到 (m,n) 的最短路径 * 0 表示可通行1 表示障碍 */funcbfs(grid[][]int,m,n,row,colint)int{// 上下左右四个方向direct:[][]int{{-1,0},{1,0},{0,-1},{0,1},}// 异常情况处理ifm0||n0||mrow||ncol||grid[0][0]1{return-1}// 起点即终点ifm0n0{return0}// visited 记录从起点到该点的最短距离visited:make([][]int,row)fori:0;irow;i{visited[i]make([]int,col)forj:0;jcol;j{visited[i][j]-1}}// 使用切片模拟队列queue:make([]Node,0)queueappend(queue,Node{0,0})visited[0][0]0head:0forheadlen(queue){cur:queue[head]headfor_,d:rangedirect{nx:cur.xd[0]ny:cur.yd[1]// 边界检查ifnx0||ny0||nxrow||nycol{continue}// 障碍物ifgrid[nx][ny]1{continue}// 已访问ifvisited[nx][ny]!-1{continue}// 更新最短距离visited[nx][ny]visited[cur.x][cur.y]1// 到达目标点直接返回ifnxmnyn{returnvisited[nx][ny]}// 入队queueappend(queue,Node{nx,ny})}}// BFS 结束后判断是否可达ifvisited[m][n]-1{return-1}returnvisited[m][n]}funcmain(){in:bufio.NewReader(os.Stdin)varm,nintvarrow,colint// 读取目标坐标fmt.Fscan(in,m,n)// 读取网格大小fmt.Fscan(in,row,col)// 读取网格grid:make([][]int,row)fori:0;irow;i{grid[i]make([]int,col)forj:0;jcol;j{fmt.Fscan(in,grid[i][j])}}// 输出结果fmt.Print(bfs(grid,m,n,row,col))}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站的icon图标做多大自己想注册公司怎么搞

一、strcat () 函数介绍strcat()&#xff08;string concatenation&#xff0c;字符串拼接&#xff09;是 C 语言标准库<string.h>中的函数&#xff0c;用于将一个字符串追加&#xff08;拼接&#xff09;到另一个字符串的末尾&#xff0c;覆盖目标字符串原有的结束符\0&…

张小明 2025/12/31 19:18:52 网站建设

安徽旅游在线网站建设做视频网站盈利多少

第一章&#xff1a;揭秘Open-AutoGLM访问控制机制的核心原理 Open-AutoGLM 作为新一代自动化大语言模型平台&#xff0c;其访问控制机制在保障系统安全与多租户隔离方面起着关键作用。该机制基于属性基加密&#xff08;Attribute-Based Encryption, ABE&#xff09;与动态策略评…

张小明 2025/12/31 19:18:44 网站建设

广州建外贸网站公司wordpress资讯主题免费

microeco终极指南&#xff1a;三步搞定植物病原真菌快速检测 【免费下载链接】microeco An R package for data analysis in microbial community ecology 项目地址: https://gitcode.com/gh_mirrors/mi/microeco 在微生物群落研究领域&#xff0c;microeco微生物分析工…

张小明 2026/1/1 22:45:08 网站建设

邢台网站设计怎么做做网站seo优化总结

第一章&#xff1a;跨领域 Agent 的协同机制在复杂分布式系统中&#xff0c;跨领域 Agent 协同机制是实现智能决策与任务自动化的核心。多个异构 Agent 需在不同业务域之间共享状态、协调动作并达成共识&#xff0c;这要求设计高效的通信协议与协作模型。消息驱动的协同模式 Ag…

张小明 2026/1/1 21:38:17 网站建设

网站源码上传建设银行新版网站上线

在 AI、自动化开发和开源生态高度繁荣的今天&#xff0c;一次 npm 包更新&#xff0c;就足以把攻击者请进你的 CI/CD 和云账号。 最新曝光的 Sha1‑Hulud供应链攻击&#xff0c;再次把整个行业敲醒&#xff1a; 它不再满足于“顺手偷点凭证”&#xff0c;而是进化出了—— 可…

张小明 2026/1/1 11:25:55 网站建设

官方网站建设 在线磐石网络福安城乡建设与规划局网站

在企业级软件开发中&#xff0c;特别是在金融、汽车电子等对安全性、可靠性有严苛要求的行业&#xff0c;测试覆盖率已从一项开发指标转变为关键的合规性与风险控制要求。然而&#xff0c;仅追求覆盖率百分比的传统方法存在局限&#xff1a;数据孤立、缺乏业务风险关联、难以满…

张小明 2025/12/30 15:16:39 网站建设