LeetCode學習筆記 機械人的運動範圍

2021-10-23 05:43:19 字數 2235 閱讀 7033

個人部落格:the blog of waiterxiaoyy 歡迎來互相交流學習。

機械人運動這類問題在做題的過程中遇到過好幾次,

大概型別就是給定乙個初始位置,可以往多個方向走(一般是2個,即右下),

有時候是4個方向(上下左右),

然後求到右下角的最小路徑,這類問題一般是採用動態規劃來做,

有時候可能會出現阻礙物,

但機械人這道題就簡化了很多,直接看題吧。

地上有乙個mn列的方格,從座標[0,0]到座標[m-1,n-1]。乙個機械人從座標[0, 0]的格仔開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行座標和列座標的數字之和大於k的格仔。

例如,當k為18時,機械人能夠進入方格 [35, 37] ,因為3+5+3+7=18。但它不能進入方格 [35, 38],因為3+5+3+8=19。請問該機械人能夠到達多少個格仔?

示例 1:

輸入:m = 2, n = 3, k = 1

輸出:3

示例 2:

輸入:m = 3, n = 1, k = 0

輸出:1

解題思路

題目和我們一開始分析的那樣,

機械人的位置在m行n列方格的左上角開始,

但目標不是右下角了,而是移動當座標的數字之和大於k後就不能繼續移動了,

這道題有個隱藏的條件,

題目說可以上下左右移動,我覺得有一定的誤導,這道題只要兩個方向就可以了,

因為機械人的初始位置在左上角,只要向右或者向下兩個方向就行了,

對於每個點,只要滿足三個條件,就可以繼續進行兩個方向的選擇,

對於該點是否被訪問,我們可以用乙個boolean型的陣列記錄該點的訪問狀態,被訪問後就變為true,

對於該點的數字之和,我們可以寫乙個函式專門計算數字的和,

//傳入座標資訊

public

intsums

(int x,

int y)

//一直取y的個位數加到結果裡面,直到y為0

while

(y !=0)

return ans;

}

對該點是否在邊界,如果在右邊界,就只能向下運動,如果在下邊界,就只能向右運動,其他邊界無需考慮,

本題可以使用深度優先搜尋和廣度優先搜尋來做

深度優先搜尋就是對每乙個方向都遞迴前進,

廣度優先搜尋要採用佇列來記錄合格的點資訊,還需要對方格進行抽象座標化,

具體我們看**。

**

class

solution

//深度優先搜尋

public

intdfs

(int i,

int j,

int sum,

boolean

visited)

//進行計算座標的數字之和

public

intsums

(int x,

int y)

//一直取y的個位數加到結果裡面,直到y為0

while

(y !=0)

return ans;

}}

class

solution

if(curpoint.y +

1< n &&

sums

(curpoint.x, curpoint.y +1)

<= k &&

!visited[curpoint.x]

[curpoint.y +1]

)}return count;

}//進行計算座標的數字之和

public

intsums

(int x,

int y)

//一直取y的個位數加到結果裡面,直到y為0

while

(y !=0)

return ans;}}

//抽象座標類

class

point

}

整理於2020.4.9

ROS機械人安裝學習筆記

最近做的乙個專案需要在ubuntu16.04下做ros機械人作業系統開發,因為之前從沒接觸過linux和ros機械人,記錄下學習過程,以備後用。假設ubuntu16.04已經安裝好了,我們的目標是安裝ros kinetic,因為這個版本支援ubuntu16.04。1.新增軟體庫到sources.li...

學習筆記 網路機械人3 0最簡單的網路機械人

利用request輸出首頁內容 import requests 匯入網路請求模組 headers 定製請求頭 html requests.get headers headers 找到 get請求 print html.text 獲取內容遍歷10頁內容 import requests 匯入網路請求模組...

機械人筆記psv中文 機械人筆記精英版

機械人筆記精英版遊戲簡介 由於phonedroid 一種具有增強現實 a.r.功能的裝置 的日益普及,先進技術的時代終於來到了種子島。在那個島上,種子島高中的機械人研究俱樂部即將解散。機械人筆記精英版遊戲故事 儘管處境艱難,機械人俱樂部僅有的兩名成員之一的kaito yashio卻毫不在意,寧願整天...