風之谷
——歡迎大家來此交流JAVA、JAVASCRIPT、CSS、VB、VBA等技術
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-1 評論-44 文章-3 trackbacks-0
2012年3月23日
[算法]Java判斷一個DAG圖(無回路有向圖Directed Acyclic Graph)
廢話不多說,直接上代碼
package
com.primeton.eos;
import
java.util.ArrayList;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
java.util.Stack;
public
class
DAG
{
public
static
Map createNode(String name)
{
HashMap node
=
new
HashMap();
node.put(
"
name
"
, name);
node.put(
"
child
"
,
new
ArrayList());
return
node;
}
public
static
void
main(String[] args)
{
Map start
=
createNode(
"
start
"
);
Map node1
=
createNode(
"
node1
"
);
Map node2
=
createNode(
"
node2
"
);
Map node3
=
createNode(
"
node3
"
);
Map node4
=
createNode(
"
node4
"
);
Map node5
=
createNode(
"
node5
"
);
Map end
=
createNode(
"
end
"
);
((List) start.get(
"
child
"
)).add(node1);
((List) start.get(
"
child
"
)).add(node2);
((List) node1.get(
"
child
"
)).add(node2);
((List) node1.get(
"
child
"
)).add(node3);
((List) node2.get(
"
child
"
)).add(node3);
((List) node3.get(
"
child
"
)).add(node4);
((List) node4.get(
"
child
"
)).add(node5);
((List) node5.get(
"
child
"
)).add(start);
((List) node5.get(
"
child
"
)).add(end);
System.out.println(checkChild(start));
}
public
static
Stack
<
String
>
stack
=
new
Stack
<
String
>
();
public
static
boolean
a
=
false
;
public
static
boolean
checkChild(Map cursor)
{
if
(stack.contains(cursor.get(
"
name
"
)))
{
return
false
;
}
stack.push((String) cursor.get(
"
name
"
));
List childs
=
(List) cursor.get(
"
child
"
);
if
(childs
!=
null
)
{
for
(
int
i
=
0
; i
<
childs.size(); i
++
)
{
if
(
!
checkChild((Map) childs.get(i)))
{
return
false
;
}
}
}
stack.pop();
return
true
;
}
}
注意,stack中不能直接放cursor,否則就會出問題了,呵呵
posted @
2012-03-23 20:25
黑旋風 閱讀(2577) |
評論 (0)
|
編輯
收藏
歡迎大家來到風之谷
<
2012年3月
>
日
一
二
三
四
五
六
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(9)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2012年3月 (1)
文章檔案
2006年8月 (3)
搜索
最新評論
1.?re: VB程序操作word表格(文字、圖片)
合并之后怎么對合并后的單元格賦值呢@黑旋風
--ganzi
2.?re: VB程序操作word表格(文字、圖片)
請問如何將word中的圖片讀取到一個變量中,或保存到磁盤的一個目錄中?
--千真萬確
3.?re: VB程序操作word表格(文字、圖片)
整行 怎么選 寫代碼 我想拆分 整行 把整行才分 2行 3行 4行 怎么寫
--110259413@qq.com
4.?re: VB程序操作word表格(文字、圖片)
設置某個文字為下標怎么設呢?
--小骰子
5.?re: VB程序操作word表格(文字、圖片)
怎樣用vb復制word表格?
--zqw
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 黑旋風
主站蜘蛛池模板:
呼图壁县
|
上蔡县
|
望奎县
|
马关县
|
榆中县
|
温泉县
|
衡阳县
|
凉山
|
华蓥市
|
阜新市
|
大邑县
|
娱乐
|
郴州市
|
焉耆
|
增城市
|
玛曲县
|
温州市
|
原阳县
|
阿坝县
|
田东县
|
丹棱县
|
顺昌县
|
高安市
|
嘉义县
|
河曲县
|
安塞县
|
阳春市
|
莱芜市
|
崇礼县
|
礼泉县
|
安陆市
|
黄浦区
|
宜良县
|
南阳市
|
乌审旗
|
汝城县
|
仪陇县
|
肃北
|
论坛
|
潞城市
|
乐清市
|