Life is filled with wonder
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
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
統計
隨筆 - 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.?八皇后(824)
2.?Java中10種數據庫的直連方式(342)
3.?清靜了一些(168)
評論排行榜
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
小屁 閱讀(824) |
評論 (2)
|
編輯
收藏
僅列出標題
Powered by:
BlogJava
Copyright © 小屁
主站蜘蛛池模板:
刚察县
|
茶陵县
|
武宣县
|
彩票
|
遂川县
|
南安市
|
瓦房店市
|
沙田区
|
武宣县
|
广德县
|
泽州县
|
比如县
|
定南县
|
辽源市
|
天水市
|
广饶县
|
偏关县
|
荥阳市
|
囊谦县
|
海伦市
|
五指山市
|
日喀则市
|
义乌市
|
乐清市
|
清丰县
|
揭西县
|
陆良县
|
淳化县
|
洛南县
|
镇安县
|
甘泉县
|
边坝县
|
普宁市
|
绥宁县
|
霍邱县
|
永清县
|
剑阁县
|
新余市
|
沽源县
|
新河县
|
巴塘县
|