日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode874

發(fā)布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode874 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這道題直接按照題意來解,建立坐標系和移動方案,思路是比較簡單的。只是需要注意需要使用set來判斷是否遇到障礙,否則會超時。

int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {int N = commands.size();int M = obstacles.size();//向上 Wx=0,Wy=1//向左 Wx=-1,Wy=0//向下 Wx=0,Wy=-1//向右 Wx=1,Wy=0set<pair<int, int>> st;for (auto &obs : obstacles){st.insert(make_pair(obs[0], obs[1]));}int Wx = 0;int Wy = 1;int Px = 0;int Py = 0;int maxdistance = 0;for (int i = 0; i < N; i++){int cmd = commands[i];//當前指令 if (cmd == -2)//左轉 {if (Wx == 0 && Wy == 1)//上-->左 {Wx = -1;Wy = 0;}else if (Wx == -1 && Wy == 0)//左-->下 {Wx = 0;Wy = -1;}else if (Wx == 0 && Wy == -1)//下-->右 {Wx = 1;Wy = 0;}else if (Wx == 1 && Wy == 0)//右-->上 {Wx = 0;Wy = 1;}}else if (cmd == -1)//右轉 {if (Wx == 0 && Wy == 1)//上-->右 {Wx = 1;Wy = 0;}else if (Wx == -1 && Wy == 0)//左-->上 {Wx = 0;Wy = 1;}else if (Wx == 0 && Wy == -1)//下-->左 {Wx = -1;Wy = 0;}else if (Wx == 1 && Wy == 0)//右-->下 {Wx = 0;Wy = -1;}}else//移動 1<=x<=9 {//此次移動之前的起點位置為Px和Pyint Tmpx = Px;int Tmpy = Py;while (cmd > 0){//以(Wx,Wy)為步進,移動一次Tmpx += Wx;Tmpy += Wy;if (st.find(make_pair(Tmpx, Tmpy)) != st.end()){Tmpx -= Wx;Tmpy -= Wy;cmd = 0;}cmd--;}int distance = Tmpx*Tmpx + Tmpy*Tmpy;if (maxdistance < distance){maxdistance = distance;}Px = Tmpx;Py = Tmpy;}}return maxdistance; }

?

轉載于:https://www.cnblogs.com/asenyang/p/9692927.html

總結

以上是生活随笔為你收集整理的leetcode874的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。