劍指offer 機械人的運動範圍

2021-09-12 07:25:08 字數 1333 閱讀 5018

試題:

地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。 例如,當k為18時,機械人能夠進入方格(35,37),因為3+5+3+7 = 18。但是,它不能進入方格(35,38),因為3+5+3+8 = 19。請問該機械人能夠達到多少個格仔?

**:

深度優先搜尋統計訪問過的位置。

public class solution 

public void find(int r, int c, int rows, int cols, int thre, int flag)

flag[r][c] = 1;

out += 1;

find(r-1,c,rows,cols,thre,flag);

find(r+1,c,rows,cols,thre,flag);

find(r,c-1,rows,cols,thre,flag);

find(r,c+1,rows,cols,thre,flag);

}public int sum(int num)

return total;

}}

public class solution 

public int find(int r, int c, int rows, int cols, int thre, int flag)

flag[r][c] = 1;

return find(r-1,c,rows,cols,thre,flag)

+find(r+1,c,rows,cols,thre,flag)

+find(r,c-1,rows,cols,thre,flag)

+find(r,c+1,rows,cols,thre,flag)

+1;}

public int sum(int num)

return total;

}}

寬度優先:

別人的非遞迴版

public int movingcount(int threshold, int rows, int cols)

,};int count = 0;

s.add(0);

visited[0] = true;

while(!s.empty()) }}

return count;

}private int getdigitsum(int i)

return sum;

}

劍指offer 機械人運動範圍

題目 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 1...

劍指offer 機械人的運動範圍

地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 19。請...

劍指offer 機械人的運動範圍

題目描述 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8...