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

中济建设官方网站慧聪网登录

中济建设官方网站,慧聪网登录,维护网站需要多少钱,wordpress后台账号密码忘记题目描述 小华和小为是很要好的朋友,他们约定周末一起吃饭。 通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形等原因,部分聚餐地点不可达)。 求小华和小为都能到达的聚餐地点有多少个? 输入描述 第一行输入m和n,m代表…

alt

题目描述

小华和小为是很要好的朋友,他们约定周末一起吃饭。

通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形等原因,部分聚餐地点不可达)。

求小华和小为都能到达的聚餐地点有多少个?

输入描述

第一行输入m和n,m代表地图的长度,n代表地图的宽度

第二行开始具体输入地图信息,地图信息包含:

0 为通畅的道路

1 为障碍物 (且仅1为障碍物)

2 为小华或者小为,地图中必定有且仅有2个(非障碍物)

3 为被选中的聚餐地点 (非障碍物)

输出描述

可以被两方都到达的聚餐地点数量,行末无空格

示例1

输入:
4 4
2 1 0 3
0 1 2 1
0 3 0 0
0 0 0 0输出:
2说明:第一行输入地图的长宽为4,4,接下来4行是地图2表示华为的位置,3是聚餐地点,图中的两个3,小华和小为都可到达,所以输出2

示例2

输入
4 4
2 1 2 3
0 1 0 0
0 1 0 0
0 1 0 0输出
0

JavaScript

const rl = require('readline').createInterface({input: process.stdin,
});
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;// Author: code5bug
void (async function () {// 读取m和nlet firstLine = await readline();let [m, n] = firstLine.split(' ').map(Number);let g = []; // 网格let vis = []; // 访问标记数组// 初始化网格和访问数组for (let i = 0; i < m; i++) {let row = (await readline()).split(' ').map(Number);g.push(row);vis.push(new Array(n).fill(0));}// 查找起点位置(小华和小为的位置)let starts = [];for (let i = 0; i < m; i++) {for (let j = 0; j < n; j++) {if (g[i][j] === 2) {starts.push([i, j]);}}}// DFS函数function dfs(g, r, c, vis, seq) {// 边界检查:越界、障碍物或已访问if (r < 0 || c < 0 || r >= m || c >= n || g[r][c] === 1 || ((vis[r][c] >> seq) & 1) === 1) {return;}// 标记当前位置已被第seq个人访问vis[r][c] |= (1 << seq);// 四个方向DFSdfs(g, r + 1, c, vis, seq);dfs(g, r - 1, c, vis, seq);dfs(g, r, c + 1, vis, seq);dfs(g, r, c - 1, vis, seq);}// 分别从两个起点进行DFSfor (let i = 0; i < 2; i++) {let pos = starts[i];dfs(g, pos[0], pos[1], vis, i);}// 统计符合条件的聚餐地点let result = 0;for (let i = 0; i < m; i++) {for (let j = 0; j < n; j++) {// 是聚餐地点且两个人都访问过if (g[i][j] === 3 && vis[i][j] === 3) {result++;}}}console.log(result);rl.close();
})();

题目描述
在一个m×n的网格中,0表示空地,1表示障碍物,2表示起点(有两个人),3表示聚餐地点。两个人分别从各自的起点出发,只能上下左右移动,不能穿过障碍物。求两人都能到达的聚餐地点的数量。

解题思路

  1. 使用深度优先搜索(DFS)分别从两个人的起点出发,标记所有可以到达的位置。
  2. 使用位运算来记录访问状态:vis数组的每个元素是一个整数,其二进制位表示不同人是否访问过该位置。
  3. 最后遍历所有聚餐地点,统计同时被两个人访问过的地点数量。

关键点

  • 使用位运算高效记录访问状态(第0位表示第一个人,第1位表示第二个人)
  • DFS遍历所有可达位置
  • 障碍物和边界条件的处理

复杂度分析

  • 时间复杂度:O(m×n),因为每个网格最多被访问两次(两个人各一次)
  • 空间复杂度:O(m×n),用于存储网格和访问状态

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

http://www.dtcms.com/a/474741.html

相关文章:

  • 北京网站建设的网站的设计页面
  • python中mod函数怎么用
  • 996引擎-批量复制图集文件
  • 01、如何学习单片机
  • 【技术文档:Dify 本地 Docker 环境邮件服务排错指南】
  • 安装 Win10/11 系统下 WSL2+Ubuntu20.04
  • 苏州专业做网站比较好的公司汕头百姓网交友
  • Git简介及安装
  • Git版本控制工具合并分支merge命令操作流程
  • SAP Business Suite:引领企业AI从工具到智能协同的全面转型
  • 门户网站申请ppt模板免费下载 动态
  • 网站建设模版文档WordPress修改前端
  • 数据结构<c语言>——串
  • 基于单片机的16位逐次逼近AD电路设计
  • 网站建设交流会石狮建设网站
  • 小白也能开发 Chrome 插件
  • 网站建设费的摊销期wordpress显示所有文章列表
  • 《以 Trae 为桥:高效集成豆包 1.6 API 的实践与思考》
  • 做网站看好金石网络高新区做网站
  • cursor自动绑定虚拟卡
  • 做网店在素材网站找的图侵权吗现在帮别人做网站赚钱不
  • 网站用微信登录 要怎么做惠山网页制作
  • IP白名单配置:使用/24子网掩码是否有效
  • Ubuntu Linux 入门指南
  • 提高网站收录江西新农村建设权威网站
  • Vue和Vue CLI
  • SQL 索引速查:CREATE / DROP / SHOW INDEX 用法全解
  • ru后缀的网站中信建设有限责任公司地址
  • 后端开发学习路线:从入门到精通
  • linux mutex