機械人的運動範圍 資料結構

2021-08-20 04:17:10 字數 756 閱讀 4228

題目:

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

測試用例:

1.格仔全部都在範圍內;

2.格仔中的部分在範圍內;

3.特殊輸入(格仔都不在範圍內,k為負數)

解題思路:

機械人從座標(0,0)開始移動。當它進入座標(i,j)的矩陣時,通過檢測(check)座標的位數和來判斷機械人是否能夠進入。如果機械人能夠進入座標為(i,j)的格仔,則繼續判斷是否能夠進入與之相連的4個格仔(i,j-1)、(i,j+1)、(i-1,j)和(i+1,j)。因此,我們可以使用回溯演算法來進行計算。

程式**:

moving.c:

#include "moving.h"

//運動函式

int getdigitsum(int number)

return sum;

}int check(int threshold,int rows,int cols,int row,int col,int * visited)

顯示結果:

機械人運動範圍

題目 地上有乙個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...