874 LeetCodeシミュレート歩行ロボット

主題の説明:
ここに画像を挿入説明
アイデア:
1は、ハッシュテーブルの使用は、障害物の座標を記録する
記録ロボット歩行のストリング使用2、方向
3に、そして最終的に最大距離を見つける場合、ロボットの位置

コードは以下の通りであります:

class Solution {
public:
    int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {
        vector<int>res;
        res.push_back(0);
        res.push_back(0);
        map<vector<int>,int>obs;
        for(int i=0;i<obstacles.size();i++){
            obs[obstacles[i]]++;
        }
        int sum=0;
        string cur="up";
        for(int i=0;i<commands.size();i++){
            if(commands[i]==-1){
                if(cur=="up")
                cur="right";
                else if(cur=="right")
                cur="down";
                else if(cur=="down")
                cur="left";
                else if(cur=="left")
                cur="up";
            }
            if(commands[i]==-2){
                if(cur=="up")
                cur="left";
                else if(cur=="left")
                cur="down";
                else if(cur=="down")
                cur="right";
                else if(cur=="right")
                cur="up";
            }
            if(commands[i]>=1&&commands[i]<=9){
                if(cur=="up")
                for(int j=1;j<=commands[i];j++){
                    res[1]+=1;
                    if(obs[res]>0){
                    res[1]-=1;
                    break;}
                }
                if(cur=="left")
                for(int j=1;j<=commands[i];j++){
                    res[0]+=-1;
                    if(obs[res]>0){
                    res[0]+=1;
                    break;}
                }
                if(cur=="down")
                for(int j=1;j<=commands[i];j++){
                    res[1]+=-1;
                    if(obs[res]>0){
                    res[1]+=1;
                    break;}
                }
                if(cur=="right")
                for(int j=1;j<=commands[i];j++){
                    res[0]+=1;
                    if(obs[res]>0){
                    res[0]-=1;
                    break;}
                }
            }
            sum=max(sum,res[0]*res[0]+res[1]*res[1]);
        }
        return sum;
    }
};
公開された133元の記事 ウォンの賞賛0 ビュー1119

おすすめ

転載: blog.csdn.net/peachzy/article/details/104495264