ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器人走路最大距离:妙解

2019-12-16 09:02:56  阅读:402  来源: 互联网

标签:obstacles return int 妙解 机器人 Int2 inline 走路 const


这题主要学习巧用C++语言,内联函数、结构体排序、C++书写方式

  • static int fast_streams = []() {  
  •    std::ios::sync_with_stdio(false);  
  •    std::cin.tie(nullptr);  
  •    std::cout.tie(nullptr);  
  •    return 0;  
  • }();  
  • struct Int2 { int x, y; };  
  • inline bool operator==(Int2 a, Int2 b) { return a.x == b.x && a.y == b.y; }  
  • inline Int2 operator+(Int2 a, Int2 b) { return {a.x + b.x, a.y + b.y}; }  
  • inline bool isFree(Int2 p, const vector<Int2>& obstacles) {  
  •     for (Int2 o : obstacles) {  
  •         if (p == o)  
  •             return false;  
  •     }  
  •     return true;  
  • }  
  • inline Int2 turnLeft(Int2 h) { return {-h.y, h.x}; }  
  • inline Int2 turnRight(Int2 h) { return {h.y, -h.x}; }  
  • class Solution {  
  • public:  
  •     int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {  
  •         const int division = 50;  
  •         vector<vector<Int2>> obs(60001 / division);  
  •         for (const vector<int>& o : obstacles)  
  •             obs[(o[0] + 30000) / division].push_back(Int2{o[0], o[1]});  
  •         Int2 p = {0, 0};  
  •         Int2 h = {0, 1};  
  •         int maxDistance = 0;  
  •         for (int command : commands) {  
  •             if (command == -2)  
  •                 h = turnLeft(h);  
  •             else if (command == -1)  
  •                 h = turnRight(h);  
  •             else {  
  •                 for (int step = 1; step <= command; ++step) {  
  •                     const Int2 n = p + h;  
  •                     if (isFree(n, obs[(n.x + 30000) / division])) {  
  •                         p = n;  
  •                         maxDistance = max(maxDistance, p.x * p.x + p.y * p.y);  
  •                     }  
  •                     else   
  •                         break;  
  •                 }  
  •             }  
  •         }  
  •         return maxDistance;  
  •     }  
  • };  

       

    来自 <http://www.planetb.ca/projects/syntaxHighlighter/popup.php>

标签:obstacles,return,int,妙解,机器人,Int2,inline,走路,const
来源: https://www.cnblogs.com/xukaiae86/p/12047328.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有