圖的dfs_euler
圖的dfs_euler
/尤拉道路和尤拉回路/
/*
- 從無向圖中的一個結點出發走出一條道路,每條邊恰好經過一次,這樣的路線稱為尤拉道路
- 如果一個無向圖是連通的,且最多隻有兩個奇點(度數為奇數),則一定存在尤拉道路。
- 如果有兩個奇點,它們必須是起點和,
- 如果奇點不存在,可以從任意點出發,最終一定會回到該點,稱為尤拉回路
- */
import java.util.Stack;
public class 圖的dfs_euler {
static Stack<String> path = new Stack<>();
//圖的鄰接矩陣
private static int[][] graph = {
{0, 1, 2, 1},
{1, 0, 0, 0},
{2, 0, 0, 1},
{1, 0, 1, 0}
};
// 節點數
private static final int n = 4;
//標記邊的訪問情況,因為通路是雙向的,所以用二維陣列
private static int[][] vis = new int[n][n];
/**
*
* @param u 現在訪問的頂點
*/
static void euler(int u) {
//其他頂點
for (int v = 0; v < n; v++) {
//有邊,且訪問次數少於連線數
if (graph[u][v] > 0 && vis[u][v] < graph[u][v]) {
//路是雙向的
vis[u][v]++;
vis[v][u]++;
//v作為新的起點,遞迴
euler(v);
//已走u->v,將這一步走法加入棧中
path.push((char) ('A' + u) + "->" + (char) ('A' + v));
}
}
}
public static void main(String[] args) {
euler(2);
while (!path.isEmpty())
System.out.println(path.pop());
}
}
相關文章
- 圖論之有權圖「帶權圖的表示」圖論
- 圖(Graph)——圖的儲存結構
- 圖論——圖的基本性質與表示圖論
- 高德地圖之地圖的屬性地圖
- 輕鬆理解UML用例圖時序圖類圖的教程時序圖
- 圖的儲存
- 我的圖床圖床
- 美圖秀秀怎麼摳圖?美圖秀秀對圖片進行圓形摳圖的教程
- Eplan外來圖紙的圖框複製
- R繪圖(06)——帶errorbar的柱狀圖繪圖ErrorORB
- 圖論的一些建圖小技巧圖論
- mac好用的流程圖繪圖軟體分享~Mac流程圖繪圖
- Gantt圖和PERT圖的相關知識
- 高德地圖之地圖的生命週期地圖
- 【Go語言繪圖】圖片的旋轉Go繪圖
- 爬取愛套圖網上的圖片
- Midjourney的一些學習心得:如何高效的圖生圖
- 不用自己摳圖的主圖設計工具,免費幫你摳圖!
- 實現簡單的輪播圖(單張圖片、多張圖片)
- 實用、易用的截圖與貼圖工具:SnipasteAST
- 圖資料庫中的“分散式”和“切圖”資料庫分散式
- 圖計算 on nLive:Nebula 的圖計算實踐
- DS圖—圖的最短路徑(不含程式碼框架)框架
- Courant-Fischer定理、譜圖分析和圖的分割
- 不偏移的天地圖地圖服務-ArcGIS版地圖
- 不偏移的天地圖地圖服務-SuperMap版地圖
- 『ios』view和tableview的截圖和圖片拼接iOSView
- 圖形的認識
- golang 合成的圖片Golang
- 更改chrome的圖示Chrome
- 【圖論】樹的重心圖論
- Blog的圖床搭建圖床
- html背景圖的使用HTML
- Java的圖形列印Java
- 圖的基本概念
- 向量圖SVG的使用SVG
- 圖靈的優惠圖靈
- Flutter 圖片的使用Flutter