地上有乙個m行n列的方格,從座標 [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
1 <= n,m <= 100
0 <= k <= 20
class
solution
//將二維陣列visited初始化為false
for(
int i =
0; i < m; i++)}
//存放最後的結果
int count =
dfs(0,
0, visited, m, n, k)
;//釋放剛剛申請的二維陣列
for(
int i=
0;i)delete
visited[i]
;delete
visited;
return count;
}//深度優先搜尋
intdfs
(int x,
int y,
bool
** visited,
int m,
int n,
int k)
//最後當dfs結束時,返回count即為機械人可以進入的格仔數
return count;
}//檢查下標數字之和是否小等於k
bool
check
(int x,
int y,
int k)
return
false;}
//得到數字之和
intgetdigitsum
(int number)
return sum;}}
;
class
solution
return res;
}public
:int
movingcount
(int m,
int n,
int k)
;int dy[2]
=;vectorint>
>
vis(m, vector<
int>
(n,0))
;//二維vector容器的建立
q.push
(make_pair(0
,0))
;//利用make_pair插入初始點
vis[0]
[0]=
1;//插入初始點後,座標(0,0)的位置就要賦值為1 ,代表已經走過
int ans =1;
//ans初始為1
while
(!q.
empty()
)}return ans;}}
;
劍指offer13機械人的運動範圍
地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入...
劍指 Offer 13 機械人的運動範圍
題目描述 地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但...
劍指 Offer 13 機械人的運動範圍
地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入...