牛客網
地上有乙個 rows 行和 cols 列的方格。座標從 [0,0] 到 [rows-1,cols-1] 。乙個機械人從座標 [0,0] 的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於 threshold 的格仔。 例如,當 threshold 為 18 時,機械人能夠進入方格 [35,37] ,因為 3+5+3+7 = 18。但是,它不能進入方格 [35,38] ,因為 3+5+3+8 = 19 。請問該機械人能夠達到多少個格仔?返回值: 例項2輸入:資料範圍:
,高階:空間複雜度
,時間複雜度
例項1
輸入:1,2,3
10,1,100返回值: 說明:
[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,16],[0,17],[0,18],[0,19],[0,20],[0,21],[0,22],[0,23],[0,24],[0,25],[0,26],[0,27],[0,28] 這29種,後面的[0,29],[0,30]以及[0,31]等等是無法到達的
題中說了,機械人是可以沿著上下左右四個方向走的。但你想一下,任何乙個格仔你從任何乙個方向進來,那麼他只能往其他3個方向走,因為如果在往回走就重複了。但實際上我們只要沿著兩個方向走就可以了,乙個是右邊,乙個是下邊
package com.huang.algorithms;
import j**a.util.linkedlist;
import j**a.util.queue;
/** * @author hxc
* @date 2022/1/10
* 機械人運動範圍
*/public class robotmotion
/*** 地上有乙個 rows 行和 cols 列的方格。座標從 [0,0] 到 [rows-1,cols-1] 。
* 乙個機械人從座標 [0,0] 的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,
* 但是不能進入行座標和列座標的數字之和大於 threshold 的格仔。
* 例如,當 threshold 為 18 時,機械人能夠進入方格 [35,37] ,因為 3+5+3+7 = 18。
* 但是,它不能進入方格 [35,38] ,因為 3+5+3+8 = 19 。請問該機械人能夠達到多少個格仔?
** @param threshold
* @param rows
* @param cols
* @return
*/public static int movingcount(int threshold, int rows, int cols)
//深度優先
private static int dfs(int i, int j, int rows, int cols, int threshold, boolean flag)
flag[i][j] = true;
//向下或者向右查詢
return 1 + dfs(i + 1, j, rows, cols, threshold, flag) + dfs(i, j + 1, rows, cols, threshold, flag);
}//算座標索引的和
private static int sum(int i, int j)
while (j != 0)
return sum;}}
機械人運動範圍
題目 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 1...
機械人運動範圍
地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 19。請...
機械人的運動範圍
題目 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 1...