導航:首頁 > 源碼編譯 > javabfs演算法

javabfs演算法

發布時間:2022-05-26 01:56:55

『壹』 java高手們可否提供一個廣度優先搜索的樣例,並簡要解釋一下該演算法……

void bfs(TreeNode t){
Queue q = new LinkedList<TreeNode>();
q.enqueue(t);
while(!q.isEmpty && q.peek().element != null){
TreeNode temp = q.dequeue();
System.out.println(temp.element);
q.enqueue(temp.leftchild);
q.enqueue(temp.rightchild);
}
}
class TreeNode <AnyType>{
AnyType element;
TreeNode rightchild;
TreeNode leftchild;
}

『貳』 ACM學bfs dfs需要有什麼基礎,C++嗎,還是Java

bfs的話,要用到隊列的思想的。

不過隊列的思想講起來,也很簡單已接受,自己網上找一下就好了。
至於其他的除了queue以外的東西,比如你寫的algorithm庫函數的,跟bfs無關,可以不做了解。
至於dfs,只要懂遞歸就可以了。
建議先學dfs,再學bfs。

『叄』 BFS求源代碼及思路

1、演算法用途:

是一種圖像搜索演演算法。用於遍歷圖中的節點,有些類似於樹的深度優先遍歷。這里唯一的問題是,與樹不同,圖形可能包含循環,因此我們可能會再次來到同一節點。

2、主要思想:

主要藉助一個隊列、一個布爾類型數組、鄰接矩陣完成(判斷一個點是否查看過,用於避免重復到達同一個點,造成死循環等),先將各點以及各點的關系存入鄰接矩陣。

再從第一個點開始,將一個點存入隊列,然後在鄰接表中找到他的相鄰點,存入隊列,每次pop出隊列頭部並將其列印出來(文字有些抽象,實際過程很簡單),整個過程有點像往水中投入石子水花散開。

4、復雜度分析:

演算法藉助了一個鄰接表和隊列,故它的空問復雜度為O(V)。 遍歷圖的過程實質上是對每個頂點查找其鄰接點的過程,其耗費的時間取決於所採用結構。 鄰接表表示時,查找所有頂點的鄰接點所需時間為O(E),訪問頂點的鄰接點所花時間為O(V),此時,總的時間復雜度為O(V+E)。

『肆』 JAVA求10個景點間各個景點的最短路徑 圖隨便話 距離隨便 求代碼

最有效,切不復雜的方法使用Breadth First Search (BFS). 基本代碼如下(偽代碼)。因為BFS不用遞歸,所以可能會有點難理解。

public Stack findPath(Vertex 起始景點, Vertex 目標景點){
Queue <Vertex> q = new Queue<Vertex>();
s.enqueue(起始景點);
Vertex 當前位置;
while(!s.isEmpty()){
當前位置 = s.dequeue();
if (當前位置 == 目標景點) break;
for (每一個相鄰於 當前位置 的景點 Vertex v){
if (!v.visited){
v.parent = 當前位置;
// 不是規定,不過可以節省一點時間
if (v == 目標景點){
current = v;
break;
}
s.enqueue(Vertex v);
v.visited = true;
}
}
}

Stack <Vertex> solution = new Stack <Vertex>();
Vertex parent = current;
while (parent != 起始景點){
solution.push(parent);
parent = current.parent;
}

for (graph中的每一個vertex) vertex.visited = false;

return solution(); // 其實這里建議用一個 Path 的inner class 來裝所獲得的路線
}

然後再 main 求每兩個景點之間的距離即可
public static void main(String[] argv){
PathFinder pf = new PathFinder();

Stack[][] 路徑 = new Stack[10][10];

for(int i=0; i<pf.vertices.length; i++){
for(int j=i+1; j<pf.vertices.length; j++){
Stack s = pf.findPath(pf.vertices[i], pf.vertices[j]);
路徑[i][j] = s; 路徑[j][i] = s; // 假設你的graph是一個undirected graph

}

}

// 這么一來就大功告成了!對於每兩個景點n 與 m之間的最短路徑就是在 stack[n][m] 中

}

還有一種方法就是用Depth First Search遞歸式的尋找路徑,不過這樣比較慢,而且我的代碼可能會造成stack overflow

public Stack dfs(Vertex 當前景點,Vertex 目標景點){
if(當前景點 == 目標景點) return;

Stack solution = new Stack();
Stack temp;
for (相鄰於 點錢景點 的每一個 Vertex v){
if (!v.visited){
v.visited = true;
temp = dfs(v, 目標景點);
// 抱歉,不記得是stack.size()還是stack.length()

if (solution.size() == 0) solution = temp;
else if(temp.size() < solution.size()) solution = temp;

v.visited = false; 復原

}

}

return solution;

}
然後再在上述的Main中叫dfs...

參考:
http://www.cs.berkeley.e/~jrs/61b/lec/29
http://www.cs.berkeley.e/~jrs/61b/lec/28

『伍』 Java如何讓一個形狀動起來,就比如貪吃蛇

你知道動畫是如何動起來的么?沒錯,就是一張一張的畫,快速地閃過,當速度足夠快的時候,就好像這個圖形動起來了..
同理,在用java做可移動圖形的時候,比如我們用awt繪圖,當我們一遍一遍擦除重繪,速度到一定程度的時候, 這個圖形就好像動了起來..
2018年8月28日15:55:01

『陸』 Java 編寫 貪吃蛇游戲的 大體思路是什麼

要代碼和jar包我這有,思路我就大概講一下:首先是要在畫布上畫上一個塊,這就是蛇頭,但是蛇是會變長的,所以需要用一個東西來存蛇,那就可以用數組、ArrayList、LinkedList、等等(我比較喜歡用LinkedList),這里雖然說的是蛇,其實是一個塊的x、y坐標,蛇是畫好了,但蛇是會動的,這就要用一個線程和一個move()方法了,讓它不停的動,蛇是動了,但是沒有方向,這時需要一個方法讓它有方向,但要注意的是相反的方向不能改變方向(也就是按了上,按下就不能用了),蛇有方向又能動,但到邊上了就不行了,這時就要讓它出界結束游戲,接下來就是要出現食物了,食物這個好辦,用一個隨機數搞定它,注意食物不能在界外,食物有了,蛇就要去吃它了,這時就要用一個方法去吃食物了,吃到了讓蛇長一個塊,食物重新出現,蛇是長大了,但是它可以碰到自己的身體,那麼你就要做了方法讓它碰到後結束游戲,就這樣最初步的思路搞定了。接下來的就是一些細節了,這就不說了。

『柒』 用Java來寫有道詞典,需要哪些知識

1.首先,你要確定你要開發什麼樣的軟體,是PC端的,還是移動端的。
2.如果是PC端的,那麼你要確定是Windows的,還是Mac OS的,或者是Linux的。前兩者可能性最大。windows 的去學C#和Qt還有MFC,你現在掌握的C和C++肯定是不夠的。Mac OS 去學Objective-C和Cocoa庫/框架。
3.如果是移動端,你最容易的還是區別一下Android和IOS的。Android去學Java和Android對應的知識,比如去看第一行代碼,對Android 有一個初步認識。IOS的話剛開始對C要求不高,你就先去學Objective-C。
4.可以查詞的話你還的去學學演算法,例如倒排索引,bfs,dfs等,剛開始可以直接上框架(可以了解一下solr和lucene),然後還得有詞庫。

『捌』 數據結構圖標問題寫一個DFS 和 BFS的java程序 提前謝謝大神了 具體在詳情下面有圖片

好。2000韓元一個烤紅薯。

『玖』 分別用DFS和BFS演算法給電腦設置AI(JAVA)

有必勝策略的吧。。狀態空間的上限是3^9也就是不到20000實際上沒有這么多。所以直接採用BFS標記會比較好。演算法的話就是填充表,把表(九個格子)填為必勝、必敗,己勝,開始的時候全部標為必敗,再從勝狀態開始向回BFS(或者DFS也可以),己勝狀態向回標的一定是敗狀態,必勝狀態的上一狀態為必敗態,必敗態的上一狀態可能是必敗或者必勝(這就是因為這傢伙走錯棋了所以要輸!)
我的習慣。不寫代碼。沒有意思。

『拾』 Java推箱子怎麼寫啊

這是我之前寫的一篇java實現推箱子演算法的文章,簡單的給你看一下:

《推箱子游戲》是一款益智游戲,游戲目標是搬運工自己來找出到某個位置的最短路徑,然後自己走過去。

最後完成地圖顯示問題,每個節點存儲自己父親節點的地址,當節點發現自己已經完成之後根據地址向上查找直到樹頂,望採納,謝謝。

閱讀全文

與javabfs演算法相關的資料

熱點內容
linux調用shell命令 瀏覽:733
樓梯工程量演算法 瀏覽:652
php偽靜態是啥意思 瀏覽:375
it程序員去外企可以鍍金嗎 瀏覽:782
雲端伺服器都有什麼 瀏覽:240
linux快播 瀏覽:568
查公司伺服器能說明什麼問題 瀏覽:310
蘋果手機怎麼給我的電話加密碼 瀏覽:671
程序反編譯教學 瀏覽:658
ecc加密演算法c語言代碼 瀏覽:881
nvr預覽提示碼流已加密 瀏覽:745
編程怎麼讓飛鏢掉落下來 瀏覽:595
如何在伺服器上運行後台代碼 瀏覽:773
安卓手機編譯時間 瀏覽:326
php插入資料庫代碼 瀏覽:394
明日之後怎麼搜索別的伺服器的人 瀏覽:828
思迅加密鎖驅動未能正常升級 瀏覽:143
文件夾哪個是相冊跟視頻 瀏覽:170
用函數編譯計算器程序 瀏覽:705
保賣數碼是哪個app 瀏覽:135