女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

模擬機器人行走

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

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

  • :向左轉 度
  • :向右轉 度
  • :向前移動 個單位長度

在網格上有一些格子被視為障礙物 。第 i 個障礙物位于網格點 。

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

返回從原點到機器人所有經過的路徑點(坐標為整數)的最大歐式距離的平方。(即,如果距離為 ,則返回 )

注意:

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

示例 1:

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

輸出:25

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

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

示例 2:

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

輸出:65

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

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

提示:

1.jpg

題解思路

1.jpg

如示例2圖示:

1.jpg

代碼實現的難點在于方向的切換,這一類題目我們統一采用 「方向數組」 來處理。

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

那么當機器人遇到改變方向的命令時,我們直接修改dir的值即可:

1.jpg

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

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

1.jpg

代碼實現

Java

class Solution {

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

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

        genObstacleSet(obstacles);

        // 當前方向,北:0, 東:1,南:2, 西:3
        int dir = 0;

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

        // 機器人位置
        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++){
                // 如果遇到障礙物,停止在當前位置
                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 {

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

    // 當前方向
    dir := 0

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

    // 當前位置
    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
}

復雜度分析

1.jpg

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    213

    文章

    29463

    瀏覽量

    211504
  • 變換器
    +關注

    關注

    17

    文章

    2130

    瀏覽量

    110389
  • JAVA
    +關注

    關注

    20

    文章

    2984

    瀏覽量

    106836
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    單足機器人行走

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

    中國工業機器人行業發展和未來趨勢分析

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

    【mBot申請】雙足行走機器人設計

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

    企鵝機器人是怎么樣的?

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

    機器人行業,我從哪里入手

    各位大神們好,我是剛畢業的大學生。我想進入機器人行業,但不知道從什么地方入手。你們能不能給我指點一下
    發表于 12-12 18:12

    輔助行走的老人智能攙扶機器人設計

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

    工業機器人仿真與編程

    ,歡迎關注!概述很多時候由于安裝場地限制的原因,使用ABB機器人廠商提供的標準行走軸并不能滿足系統集成的需求。這個時候就需要自定義設計機器人行走軸,對機器人生產線進行仿真時就同樣需要使
    發表于 09-07 08:57

    自制一個單獨行走機器人

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

    基于激光掃描的移動機器人行走環境直線檢測_文偉松

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

    大型17R“加藤一郎”結構雙足機器人仿人行走控制研究

    針對大型17R加藤一郎結構雙足機器人仿人行走控制問題,從仿人機器人的機械結構、控制系統、步態仿真、動力學參數等方面對機器人的影響進行了研究,采用仿生學原理,參考了人體上、下半身比例特點
    發表于 03-02 15:59 ?1次下載
    大型17R“加藤一郎”結構雙足<b class='flag-5'>機器人</b>仿<b class='flag-5'>人行走</b>控制研究

    看看一般都有什么連桿機構適于用于機器人行走

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

    雙足行走機器人步行原理是什么?步態軌跡規劃的詳細分析資料概述

    行走軌跡,使得機器人行走姿態更像人類的行走.通過模擬測試,結果表明了用三次多項式插值方法是1種規劃雙足
    發表于 08-13 08:00 ?103次下載

    用于輔助老人行走/康復鍛煉的攙扶機器人

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

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

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

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

    過去,對于許多殘障人士來說,一輩子只能依靠輪椅。現在,外骨骼機器人的出現,改變了下肢癱瘓、行動不便的人幾乎無法行走的困境。那么,外骨骼機器人是怎樣帶動人行走的?又有哪些應用場景?未來發
    的頭像 發表于 09-21 10:01 ?1483次閱讀
    外骨骼<b class='flag-5'>機器人</b>讓殘障人士重獲<b class='flag-5'>行走</b>自由