Life is filled with wonder
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
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
1
2
3
4
5
6
7
统计
随笔 - 3
文章 - 0
评论 - 2
引用 - 0
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
database(1)
(rss)
hibernate
(rss)
java(2)
(rss)
spring
(rss)
struts
(rss)
生活(1)
(rss)
随笔档案
2008年1月 (1)
2007年12月 (1)
2007年11月 (1)
相册
程序
学习
一只小蚂蚁
(rss)
天天进步
(rss)
搜索
最新评论
1. re: 八皇后
评论内容较长,点击标题查看
--李伟彬
2. re: 八皇后
演示程序 jar文件, 直接运行
--小屁
阅读排行榜
1. 八皇后(812)
2. Java中10种数据库的直连方式(330)
3. 清静了一些(158)
评论排行榜
1. 八皇后(2)
2. 清静了一些(0)
3. Java中10种数据库的直连方式(0)
置顶随笔
#
[置顶]八皇后
写了两天,
应用递归和回溯.
对如何组织类,
更一步加深
/Files/xyq002444/Queens.rar
八皇后主程序的算法
import
java.util.
*
;
public
class
QueenSolver
{
private
int
count;
//
皇后的数目
private
Queen queens[];
private
Queue
<
Queen[]
>
queue;
public
QueenSolver(
int
count)
{
this
.count
=
count;
queens
=
new
Queen[count];
queue
=
new
QueenList
<
Queen[]
>
();
this
.initialize();
this
.process();
}
//
初始化
private
void
initialize()
{
for
(
int
i
=
0
; i
<
count; i
++
)
{
queens[i]
=
new
Queen(i
+
1
,
0
);
}
}
//
能否放置一个皇后
private
boolean
place(Queen queen)
{
for
(
int
i
=
0
; i
<
queen.x
-
1
; i
++
)
{
if
(queens[i].y
==
queen.y
||
queens[i].getX_Y()
==
queen.getX_Y()
||
queens[i].getAddXY()
==
queen.getAddXY())
{
return
false
;
}
}
return
true
;
}
private
void
process()
{
int
k
=
1
;
queens[k
-
1
].y
=
0
;
while
(k
>
0
)
{
queens[k
-
1
].y
=
queens[k
-
1
].y
+
1
;
while
(queens[k
-
1
].y
<=
count
&&
!
this
.place(queens[k
-
1
]))
{
queens[k
-
1
].y
=
queens[k
-
1
].y
+
1
;
}
if
(queens[k
-
1
].y
<=
count)
{
if
(k
==
count)
{
//
this.printPosition(queens);
Queen[] queenClone
=
new
Queen[queens.length];
for
(
int
i
=
0
; i
<
queenClone.length; i
++
)
{
queenClone[i]
=
new
Queen(queens[i].x, queens[i].y);
}
for
(
int
i
=
0
; i
<
queens.length; i
++
)
{
queens[i].setXPosition();
queens[i].setYPosition();
}
queue.offer(queenClone);
}
else
{
k
=
k
+
1
;
queens[k
-
1
].y
=
0
;
}
}
else
{
k
=
k
-
1
;
}
}
}
public
void
printPosition(Queen[] queens)
{
for
(Queen queen : queens)
{
System.out.println(queen.x
+
"
y:
"
+
queen.y);
}
}
public
Queue
<
Queen[]
>
getQueue()
{
return
this
.queue;
}
}
posted @
2007-12-14 21:14
小屁 阅读(812) |
评论 (2)
|
编辑
收藏
仅列出标题
Powered by:
BlogJava
Copyright © 小屁