news 2026/8/22 0:49:50

经典算法题详解之游乐园的迷宫(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
经典算法题详解之游乐园的迷宫(三)

解决方案

平面上有 个点,找到一条访问 个点的路径,使得路径的转角满足给定的转角序列。

题解

我们保持一个理想的状态:转向时,剩余的点都位于要求方向的一侧(即剩余点都符合当前这次的转向要求)。那么当前这次转向选择什么点,可以使下一次转向依旧满足这个理想的状态,从而可以不断的递归找下去。

若下一次转向的要求方向是 L (R),则这次转向的点中选择相对方向最右(最左)的点即可。

C++ 实现

class Solution { private: pair<int, int> Sub(pair<int, int> a, pair<int, int> b) { // 求点 a 到点 b 的向量 return make_pair(a.first - b.first, a.second - b.second); } int Cross(pair<int, int> a, pair<int, int> b) { // 求向量 a 到向量 b 的向量叉积 return a.first * b.second - a.second * b.first; } public: vector<int> visitOrder(vector< vector<int> >& points, string dir) { int n = points.size(); vector<bool> used(n, false); // 记录点的遍历情况, False未遍历 / True已遍历 vector< pair<int, int> > point; vector<int> order; // 记录返回结果 for (int i=0; i<n; ++i) { point.push_back( make_pair(points[i][0], points[i][1]) ); } // 查找最左的点作为 起始点 int start = 0; for (int i=1; i<n; ++i) { if (point[i] < point[start]) { start = i; } } used[start] = true; order.push_back(start); for (int i=0; i<dir.size(); ++i) { int next = -1; if (dir[i] == 'L') { // 转向方向为 L,选择相对方向最右的点 for (int j=0; j<n; ++j) { if (!used[j]) { if (next == -1 || Cross(Sub(point[next], point[start]), Sub(point[j], point[start])) < 0) { next = j; } } } } else if (dir[i] == 'R') { // 转向方向为 R,选择相对方向最左的点 for (int j=0; j<n; ++j) { if (!used[j]) { if (next == -1 || Cross(Sub(point[next], point[start]), Sub(point[j], point[start])) > 0) { next = j; } } } } // 返回结果加入选择的点,更新下一次转向的起点 used[next] = true; order.push_back(next); start = next; } // 添加最后一个剩余点 for (int i=0; i<n; ++i) { if (used[i] == false) { order.push_back(i); } } return order; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 21:39:36

从并网到离网,尽在掌握:分布式储能微网智能监控与能量管理系统

在 “双碳” 目标与能源转型的双重驱动下&#xff0c;分布式储能微网已成为工业园区、工商业企业、偏远矿区实现能源自主可控的核心载体&#xff0c;而智能监控与能量管理系统则是决定微网高效运行、灵活切换的 “智慧大脑”。无论是并网模式下的峰谷套利、需求响应&#xff0c…

作者头像 李华
网站建设 2026/8/21 22:15:57

【openFuyao】openFuyao社区AI推理加速组件技术解析与实践

本文基于昇腾提供的技术素材&#xff08;含慕课、教程&#xff09;二次创作&#xff0c;素材原稿禁止直接传播 openFuyao社区AI推理加速组件技术解析与实践一、AI推理加速的核心痛点&#xff1a;算力困局与效率瓶颈二、核心技术突破&#xff1a;智能路由与分布式KVCache的协同优…

作者头像 李华
网站建设 2026/8/22 0:20:25

10分钟精通Pyenv:Python多版本管理终极解决方案

10分钟精通Pyenv&#xff1a;Python多版本管理终极解决方案 【免费下载链接】pyenv Simple Python version management 项目地址: https://gitcode.com/GitHub_Trending/py/pyenv 引言&#xff1a;Python开发者的版本困境 你是否曾经遇到过这样的场景&#xff1f;项目A…

作者头像 李华
网站建设 2026/8/21 21:05:08

五大主流CRM品牌核心能力深度横评:从全业务覆盖到AI赋能的选型参考

CRM&#xff08;客户关系管理&#xff09;作为企业数字化转型的核心工具&#xff0c;其价值已从“客户资料存储”升级为“全业务流程协同数据驱动决策AI智能赋能”。本文选取超兔一体云、销氪CRM、Microsoft Dynamics 365 CRM、探马SCRM、悟空CRM五大主流品牌&#xff0c;围绕客…

作者头像 李华
网站建设 2026/8/21 8:30:22

乐鑫私有化智能体平台介绍与应用

乐鑫正式推出乐鑫私有化智能体平台 (Private AI Agents Platform)&#xff0c;这是一个专为 IoT 设备厂商打造的自托管智能体平台&#xff0c;支持厂商在其自有 AWS 账户中部署和管理。该平台经过专门优化&#xff0c;用于构建和管理可集成到连接设备、配套移动应用及 Web 控制…

作者头像 李华