JAVA演算法 DFS演算法求解機械人位置移動

2021-09-13 12:29:41 字數 1135 閱讀 1740

[基礎演算法] dfs演算法求解機械人位置移動

【問題】地上有乙個m行和

n列的方格。乙個機械人從座標

0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於

k的格仔。 例如,當k為

18時,機械人能夠進入方格(

35,37

),因為

3+5+3+7 = 18

。但是,它不能進入方格(

35,38

),因為

3+5+3+8 = 19

。請問該機械人能夠達到多少個

格仔?

演算法分析:

演算法**

package com.bean.algorithmbasic;

public class robotmoving

visited[x][y]=1;

return dfs(x+1,y,rows,cols,visited,threshold)+

dfs(x-1,y,rows,cols,visited,threshold)+

dfs(x,y+1,rows,cols,visited,threshold)+

dfs(x,y-1,rows,cols,visited,threshold)+1;

} /**

* 乙個數字的數字之和

* * @param number 數字

* @return 數字的數字之和

*/private static int getdigitsum(int number)

return result;

} public static void main(string args)

}

計算結果:

result = 10

DFS求解數獨演算法

以前也想過很久解數獨的演算法,但是沒有得到很簡單的方法,某天看到某位學長的 恍然大悟,本以為暴力搜尋會很花時間 10 81種可能 沒想到實際上由於各種限制,列舉次數竟然普遍小於10000次,用dfs便可實現每種可能都列舉。這樣計算乙個數獨就很快了 不到1ms 下面附上自己理解改動並加了注釋的 dev...

迷宮求解演算法(棧DFS以及佇列BFS)

我們首先給出乙個迷宮,它的規格是5 5,在這裡我使用int的二維陣列表示迷宮,其中1表示障礙,0表示可以通行的道路,要求從 0,0 座標走到 4,4 座標,並輸出走過的座標路徑。int maze 5 5 使用棧來實現dfs 深度優先搜尋 首先,我們給出棧在迷宮中的的結構定義。x是迷宮中的橫座標 y是...

演算法 回溯演算法套路(dfs)

解決乙個回溯問題,本質是乙個決策樹的遍歷 三要素 1.路徑 已經做出的選擇 2.選擇列表 當前可以做的選擇 3.結束條件 到達決策樹底層,不用再做選擇 演算法框架 result def backtrack path,choicelist if 滿足結束條件 result.push back path...