风之谷
——欢迎大家来此交流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
黑旋风 阅读(2571) |
评论 (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