色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

模擬機(jī)器人行走

冬至子 ? 來源:i余數(shù) ? 作者:i余數(shù) ? 2023-06-07 17:01 ? 次閱讀

機(jī)器人在一個無限大小的 XY 網(wǎng)格平面上行走,從點(diǎn) 處開始出發(fā),面向北方。該機(jī)器人可以接收以下三種類型的命令 :

  • :向左轉(zhuǎn) 度
  • :向右轉(zhuǎn) 度
  • :向前移動 個單位長度

在網(wǎng)格上有一些格子被視為障礙物 。第 i 個障礙物位于網(wǎng)格點(diǎn) 。

機(jī)器人無法走到障礙物上,它將會停留在障礙物的前一個網(wǎng)格方塊上,但仍然可以繼續(xù)嘗試進(jìn)行該路線的其余部分。

返回從原點(diǎn)到機(jī)器人所有經(jīng)過的路徑點(diǎn)(坐標(biāo)為整數(shù))的最大歐式距離的平方。(即,如果距離為 ,則返回 )

注意:

  • 北表示 +Y 方向。
  • 東表示 +X 方向。
  • 南表示 -Y 方向。
  • 西表示 -X 方向。

示例 1:

輸入:commands = [4,-1,3], obstacles = []

輸出:25

解釋: 機(jī)器人開始位于 (0, 0):

  1. 向北移動 4 個單位,到達(dá) (0, 4)
  2. 右轉(zhuǎn)
  3. 向東移動 3 個單位,到達(dá) (3, 4) 距離原點(diǎn)最遠(yuǎn)的是 (3, 4) ,距離為 32 + 42 = 25

示例 2:

輸入:commands = [4,-1,4,-2,4], obstacles = [[2,4]]

輸出:65

解釋:機(jī)器人開始位于 (0, 0):

  1. 向北移動 4 個單位,到達(dá) (0, 4)
  2. 右轉(zhuǎn)
  3. 向東移動 1 個單位,然后被位于 (2, 4) 的障礙物阻擋,機(jī)器人停在 (1, 4)
  4. 左轉(zhuǎn)
  5. 向北走 4 個單位,到達(dá) (1, 8) 距離原點(diǎn)最遠(yuǎn)的是 (1, 8) ,距離為 12 + 82 = 65

提示:

1.jpg

題解思路

1.jpg

如示例2圖示:

1.jpg

代碼實現(xiàn)的難點(diǎn)在于方向的切換,這一類題目我們統(tǒng)一采用 「方向數(shù)組」 來處理。

我們定義當(dāng)前方向為dir,可取值為 {0,1,2,3};分別代表 {北,東,南,西}。見上圖。

那么當(dāng)機(jī)器人遇到改變方向的命令時,我們直接修改dir的值即可:

1.jpg

然后再分別在 xy 兩個方向上定義兩個方向數(shù)組,以Java為例:

int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};
  1. 方向為北(0)時:每次前進(jìn) x 不變,y 加一。
  2. 方向為東(1)時:每次前進(jìn) x 加一,y 不變。
  3. 方向為南(2)時:每次前進(jìn) x 不變,y 減一。
  4. 方向為西(3)時:每次前進(jìn) x 減一,y 不變。

1.jpg

代碼實現(xiàn)

Java

class Solution {

    private Set< Integer > obstacleSet = new HashSet<  >();
    private int factor = 100000;

    public int robotSim(int[] commands, int[][] obstacles) {

        genObstacleSet(obstacles);

        // 當(dāng)前方向,北:0, 東:1,南:2, 西:3
        int dir = 0;

        // 方向數(shù)組
        int[] dx = {0, 1, 0, -1};
        int[] dy = {1, 0, -1, 0};

        // 機(jī)器人位置
        int x = 0, y = 0; 
        int ans = 0;
        for(int command : commands){
            if(command == -2){
                dir = (dir + 3) % 4;
                continue;
            }if(command == -1){
                dir = (dir + 1) % 4;
                continue;
            }
            for(int i = 0; i < command; i++){
                // 如果遇到障礙物,停止在當(dāng)前位置
                if(isObstacle(x + dx[dir], y + dy[dir])){
                    break;
                }
                x += dx[dir];
                y += dy[dir];
                ans = Math.max(ans, x * x + y * y);
            }
        }

        return ans;

    }

    // 判斷是否是障礙物
    private boolean isObstacle(int x, int y){
        return obstacleSet.contains(factor * x + y);
    }

    private void genObstacleSet(int[][] obstacles){

        for(int[] obstacle : obstacles){
            obstacleSet.add(factor * obstacle[0] + obstacle[1]);
        }

    }
}

Go

func robotSim(commands []int, obstacles [][]int) int {

    // 初始化障礙點(diǎn)位
    obstacleMap := make(map[[2]int]bool)
    for _, obstacle := range obstacles {
        obstacleMap[[2]int{obstacle[0], obstacle[1]}] = true
    }

    // 當(dāng)前方向
    dir := 0

    // 方向數(shù)組
    dx, dy := []int{0, 1, 0, -1}, []int{1, 0, -1, 0}

    // 當(dāng)前位置
    x, y := 0, 0

    // 答案
    ans := 0

    for _, command := range commands {
        if command == -2 {
            dir = (dir + 3) % 4
            continue
        }

        if command == -1 {
            dir = (dir + 1) % 4
            continue
        }

        for i := 0; i < command; i++ {
            // 遇到障礙物
            if _, ok := obstacleMap[[2]int{x + dx[dir], y + dy[dir]}]; ok {
                break;
            }
            x += dx[dir]
            y += dy[dir]

            ans = max(ans, x * x + y * y)
        }
    }

    return ans

}

func max(a int, b int) int {
    if a > b {
        return a
    }
    return b
}

復(fù)雜度分析

1.jpg

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    211

    文章

    28468

    瀏覽量

    207368
  • 變換器
    +關(guān)注

    關(guān)注

    17

    文章

    2100

    瀏覽量

    109358
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2970

    瀏覽量

    104830
收藏 人收藏

    評論

    相關(guān)推薦

    單足機(jī)器人行走

    `<p><strong>項目說明:</strong>該項目使用單片機(jī)為控制核心完成對單足機(jī)器人站立,行走的控制
    發(fā)表于 10-24 19:02

    中國工業(yè)機(jī)器人行業(yè)發(fā)展和未來趨勢分析

    了3個階段:70年代的萌芽期,80年代的開發(fā)期和90年代的適用化期。當(dāng)今工業(yè)機(jī)器人技術(shù)正逐漸向著具有行走能力、具有多種感知能力、具有較強(qiáng)的對作業(yè)環(huán)境的自適應(yīng)能力的方向發(fā)展。當(dāng)前,對全球機(jī)器人技術(shù)的發(fā)展
    發(fā)表于 04-25 16:45

    【mBot申請】雙足行走機(jī)器人設(shè)計

    ,各個傳感器模塊之間的聯(lián)系。項目描述:雙足行走機(jī)器人主要功能實現(xiàn)了機(jī)器人行走,周圍環(huán)境溫度、濕度等數(shù)據(jù)的檢測和實時畫面的傳輸,機(jī)器人行走
    發(fā)表于 11-30 15:57

    企鵝機(jī)器人是怎么樣的?

    企鵝機(jī)器人由BS2控制器控制兩個角度舵機(jī)實現(xiàn)模擬企鵝的行走,包括前進(jìn),后退與轉(zhuǎn)向,同時還可以控制另外兩個角度舵機(jī)模擬企鵝翅膀的動作;語音播放模塊可以發(fā)出企鵝真實的叫聲。企鵝
    發(fā)表于 03-29 17:29

    機(jī)器人行業(yè),我從哪里入手

    各位大神們好,我是剛畢業(yè)的大學(xué)生。我想進(jìn)入機(jī)器人行業(yè),但不知道從什么地方入手。你們能不能給我指點(diǎn)一下
    發(fā)表于 12-12 18:12

    輔助行走的老人智能攙扶機(jī)器人設(shè)計

    `現(xiàn)在的社會狀況,老齡化越來越大,隨著年紀(jì)的增長,吃飯手抖,行走不方便,這些都是年齡增大都要經(jīng)歷的事情。智能關(guān)注老人生活健康,針對行動不方便,工業(yè)設(shè)計公司設(shè)計出了這款老人攙扶機(jī)器人設(shè)計,用來輔助老人行走
    發(fā)表于 10-12 17:42

    工業(yè)機(jī)器人仿真與編程

    ,歡迎關(guān)注!概述很多時候由于安裝場地限制的原因,使用ABB機(jī)器人廠商提供的標(biāo)準(zhǔn)行走軸并不能滿足系統(tǒng)集成的需求。這個時候就需要自定義設(shè)計機(jī)器人行走軸,對機(jī)器人生產(chǎn)線進(jìn)行仿真時就同樣需要使
    發(fā)表于 09-07 08:57

    自制一個單獨(dú)行走機(jī)器人

    描述自主機(jī)器人這個項目是一個單獨(dú)行走機(jī)器人,奇妙的是它的簡單和使用很少的組件,它走在一條黑色的“軌道”線上。你會喜歡的,它很受孩子們歡迎。PCB
    發(fā)表于 07-13 07:30

    基于激光掃描的移動機(jī)器人行走環(huán)境直線檢測_文偉松

    基于激光掃描的移動機(jī)器人行走環(huán)境直線檢測_文偉松
    發(fā)表于 03-19 19:25 ?0次下載

    大型17R“加藤一郎”結(jié)構(gòu)雙足機(jī)器人仿人行走控制研究

    針對大型17R加藤一郎結(jié)構(gòu)雙足機(jī)器人仿人行走控制問題,從仿人機(jī)器人的機(jī)械結(jié)構(gòu)、控制系統(tǒng)、步態(tài)仿真、動力學(xué)參數(shù)等方面對機(jī)器人的影響進(jìn)行了研究,采用仿生學(xué)原理,參考了人體上、下半身比例特點(diǎn)
    發(fā)表于 03-02 15:59 ?1次下載
    大型17R“加藤一郎”結(jié)構(gòu)雙足<b class='flag-5'>機(jī)器人</b>仿<b class='flag-5'>人行走</b>控制研究

    看看一般都有什么連桿機(jī)構(gòu)適于用于機(jī)器人行走

    是由Jansen發(fā)明的,用于模擬平穩(wěn)行走,Jansen利用這種連桿制造了著名的海灘巨獸,這種連桿兼具美學(xué)價值和技術(shù)優(yōu)勢,通過簡單的旋轉(zhuǎn)輸入就可模仿生物行走運(yùn)動,這種連桿已經(jīng)用于行走
    的頭像 發(fā)表于 07-24 14:50 ?1.4w次閱讀
    看看一般都有什么連桿機(jī)構(gòu)適于用于<b class='flag-5'>機(jī)器人行走</b>的

    雙足行走機(jī)器人步行原理是什么?步態(tài)軌跡規(guī)劃的詳細(xì)分析資料概述

    行走軌跡,使得機(jī)器人行走姿態(tài)更像人類的行走.通過模擬測試,結(jié)果表明了用三次多項式插值方法是1種規(guī)劃雙足
    發(fā)表于 08-13 08:00 ?102次下載

    用于輔助老人行走/康復(fù)鍛煉的攙扶機(jī)器人

    現(xiàn)在的社會狀況,老齡化越來越大,隨著年紀(jì)的增長,吃飯手抖,行走不方便,這些都是年齡增大都要經(jīng)歷的事情。智能關(guān)注老人生活健康,針對行動不方便,工業(yè)設(shè)計公司設(shè)計出了這款老人攙扶機(jī)器人設(shè)計,用來輔助老人行走、康復(fù)鍛煉的智能產(chǎn)品。
    的頭像 發(fā)表于 10-13 10:27 ?4181次閱讀

    仿生微型機(jī)器人來了 用光彎曲混合水凝膠致機(jī)器人行走

    用光彎曲混合水凝膠致機(jī)器人行走。 圖片來源:《科學(xué)機(jī)器人》網(wǎng)站 據(jù)最新一期《科學(xué)機(jī)器人》報道,美國西北大學(xué)的研究人員開發(fā)出首個類似于生命的材料,可以充當(dāng)軟機(jī)器人。它能以人類的速度
    發(fā)表于 12-11 19:21 ?768次閱讀

    外骨骼機(jī)器人讓殘障人士重獲行走自由

    過去,對于許多殘障人士來說,一輩子只能依靠輪椅。現(xiàn)在,外骨骼機(jī)器人的出現(xiàn),改變了下肢癱瘓、行動不便的人幾乎無法行走的困境。那么,外骨骼機(jī)器人是怎樣帶動人行走的?又有哪些應(yīng)用場景?未來發(fā)
    的頭像 發(fā)表于 09-21 10:01 ?1152次閱讀
    外骨骼<b class='flag-5'>機(jī)器人</b>讓殘障人士重獲<b class='flag-5'>行走</b>自由
    主站蜘蛛池模板: 内射白浆一区二区在线观看| 老女人与小伙子露脸对白| 在线视频免费国产成人| 午夜免费体验30分| 色欲档案之麻雀台上淫| 欧美性极品黑人hd| 女人张开腿让男人桶爽免| 看电影就来5566先锋av| 久久精品人人做人人爽97| 黄色天堂网站| 狠狠撸亚洲视频| 护士一级片| 狠狠色狠狠色综合系列| 国内精品久久久久影院男同志| 国产成人精品男人免费| 二次元美女扒开内裤喷水| 成年无码av片| 高h gl肉文| 国产精品久久久久久久人人看| 国产超嫩一线天在线播放| 国产成人精选免费视频| 国产精品成久久久久三级四虎 | 国产成人精品免费视频大全办公室 | 偷窥自拍性综合图区| 色戒西瓜视频| 四川少妇大战4黑人| 午夜伦理在线观看| 亚洲另类中文字幕| 伊人久久精品中文字幕| 76人遣返航班上71人呈阳性| 91进入蜜桃臀在线播放| chinese黑人第一次| 菲律宾毛片| 国产午夜精品不卡视频| 寂寞少妇直播| 久久视频精品38在线播放| 免费观看的毛片| 日本熟妇乱妇熟色A片蜜桃亚洲| 天天插天天舔| 野花社区WWW韩国日本| 57PAO强力打造高清免费|