地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。 例如,當k為18時,機械人能夠進入方格(35,37),因為3+5+3+7 = 18。但是,它不能進入方格(35,38),因為3+5+3+8 = 19。請問該機械人能夠達到多少個格仔?
1.從(0,0)開始走,每成功走一步標記當前位置為true,然後從當前位置往四個方向探索,
返回1 + 4 個方向的探索值之和。
2.探索時,判斷當前節點是否可達的標準為:
1)當前節點在矩陣內;
2)當前節點未被訪問過;
3)當前節點滿足limit限制。
//1.計數函式int,引數:閾值int,矩陣行數int,矩陣列數int,返回值:計數int
如果閾值為負,矩陣不存在,返回0
分配訪問矩陣bool並初始化
初始化計數為0
從(0,0)開始計數
返回計數
//2.搜尋函式int ,引數:閾值int,矩陣行數int,矩陣列數int,當前行數int,當前列數int,訪問矩陣陣列bool*,返回值:計數int
初始計數為0
如果該位置滿足條件
.1 更新訪問矩陣
.2 從該位置的上下左右開始作為起點依次行遞迴呼叫,這裡是計數,所以用+,如果是找存在路徑就用或。
返回計數
//3.匹配函式bool,引數::閾值int,矩陣行數int,矩陣列數int,當前行數int,當前列數int,訪問矩陣陣列bool*,返回值:是否滿足條件 bool
如果該位置滿足條件:1.不越界。2.不超過閾值。3.未曾訪問過。則返回真。
否則返回假。
//4. 計算數字之和函式int,引數:數字int,返回值:數字之和int。
初始化數為之和為0
迴圈
.1 取餘,先加個位數
.2 除以10,降一位
返回sum
class solution
//2.搜尋函式int ,引數:閾值int,矩陣行數int,矩陣列數int,當前行數int,當前列數int,訪問矩陣陣列bool*,返回值:計數int
int movingcountcore(int threshold,int rows,int cols,int row,int col,bool* visited)
返回計數
return count;
}//3.匹配函式bool,引數::閾值int,矩陣行數int,矩陣列數int,當前行數int,當前列數int,訪問矩陣陣列bool*,返回值:是否滿足條件 bool
bool check(int threshold,int rows,int cols,int row,int col,bool* visited)
//4. 計算數字之和函式int,引數:數字int,返回值:數字之和int。
int getdigitsum(int num)
返回sum
return sum;
}};
13 機械人運動範圍
地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 19。請...
13 機械人的運動範圍
有乙個m行n列的方格,乙個機械人從座標 0 0 的格仔開始移動,它每次可以向上下左右移動一格,但不能進入座標位數和大於threshold的格仔,求機械人一共能到達多少個格仔 機械人從 0,0 開始移動,當要移動到 i,j 時,先判斷i,j是否滿足條件,如果滿足,就進入,遞迴執行。如果不滿足,嘗試其他...
13機械人的運動範圍
地上有乙個 m 行和 n 列的方格。乙個機械人從座標 0,0 的格仔開始移動,每一次只能向左右上下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於 k 的格仔。例如,當 k 為 18 時,機械人能夠進入方格 35,37 因為 3 5 3 7 18。但是,它不能進入方格 35,38 因為 3...