機械人的運動範圍

2021-08-18 03:20:59 字數 796 閱讀 3510

宣告:題目、程式來自《劍指offer》,注釋、分析為自己寫下備忘,侵刪

遞迴(回溯)    

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

分析:可以乙個格仔乙個格仔計算,但每行或每列上的格仔與其相鄰的格仔座標有關係。不產生數字進製的情況下,右移一格仔,數字之和加一。每列下移乙個格仔,數字之和加一。所以在數字之和為k的座標之上和之左的座標都可以到達。

再進一步,暫時想不出能快速解決的方法,那就還是用遞迴(回溯法)。

程式來自《劍指offer》

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

//遞迴呼叫自身,返回count值

int movingcountcore(int threshold, int rows, int cols, int row, int col, bool* visited)

return count;

}//判斷單獨乙個數字是否符合要求

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

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...