可爱的琪琪,开心快乐每一天
温馨小屋
可爱的琪琪,开心快乐每一天
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 7,comments - 39,trackbacks - 0
<
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
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
C#(1)
java(3)
随笔档案
2007年3月 (2)
2007年2月 (2)
2006年11月 (1)
2006年10月 (1)
2006年9月 (1)
文章分类
C#(2)
杂文(4)
文章档案
2007年3月 (2)
2007年1月 (1)
2006年9月 (4)
相册
football
同学博客
谢良剑
谢良剑
搜索
最新评论
1. re: c#中如何让form窗体最大化
嗯嗯,用到了,感谢分享,QQQ
--今日
2. re: c#操作excel后关闭excel.exe的方法[未登录]
试试哈,谢谢了啊
--liu
3. re: c#操作excel后关闭excel.exe的方法
谢谢,真的搞定了。
--nbbnmm
4. re: c#操作excel后关闭excel.exe的方法
一发布就用不了,拒绝访问!!!不知道是不是权限问题,谁解决了?
--关闭excel
5. re: c#中如何让form窗体最大化
@鄙视你
@ff
--ff
阅读排行榜
1. c#操作excel后关闭excel.exe的方法(10135)
2. 大数据量insert与update语句的效率问题(6078)
3. oracle时间模糊查询(4880)
4. 如何解决使用jxl写excel文件出现的内存泄露的情况(2070)
5. 如何在struts中使用tiles(763)
评论排行榜
1. c#操作excel后关闭excel.exe的方法(16)
2. oracle时间模糊查询(8)
3. 如何解决使用jxl写excel文件出现的内存泄露的情况(1)
4. 大数据量insert与update语句的效率问题(1)
5. 据说被称为世上最经典的15句话 (0)
八皇后问题
网上看面试题时看到,摘抄别人写的一个程序,并做了一些注解,翻译为java版,记录一下
package
chenqi;
/** */
/**
* 要求:试编写程序实现将八个皇后放置在国际象棋棋盘的无冲突的位置上的算法,并给出所有的解。
* 提示:在国际象棋上放置皇后时,任何一个皇后的水平、竖直和斜45º都不能有另一个皇后。
* 解决该问题采用逐次试探的方法,即采用递归调用putchess函数的方法。
* 首先将第一个皇后放于第一行第一列,然后开始向下一行递归。
* 每一步递归中,首先检测待放置位置是否与已放置的皇后冲突,如不冲突,则进行下一行的放置,
* 否则,选择该行的下一个位置进行检测。如整行的位置都冲突,则回到上一行,重新选择位置源码:
*
@author
Administrator
*
*/
public
class
EightQueen
{
//
8根线代表8列,数组中每个对象存的值表示皇后在该列的位置
int
[] line
=
new
int
[
8
];
int
answer
=
0
;
/** */
/**
* 判断是否有冲突---用试探法,判断是否与其他列有冲突
*
@param
t
*
@return
返回0表示没有冲突,返回1表示有冲突
*/
private
int
Judge(
int
t)
{
int
i, n
=
0
;
for
(i
=
0
; i
<
t; i
++
)
{
//
第一种冲突情况:2列处于同一行冲突
if
(line[i]
==
line[t])
{
n
=
1
;
break
;
}
//
2列处于斜向上45度对角线冲突
if
(line[i]
+
i
==
line[t]
+
t)
{
n
=
1
;
break
;
}
//
2列处于斜向下45度对角线冲突
if
(line[i]
-
i
==
line[t]
-
t)
{
n
=
1
;
break
;
}
}
return
n;
}
/** */
/**
* 主要控制函数
*
@param
n
*/
private
void
control(
int
n)
{
int
t
=
8
;
for
(line[n]
=
0
; line[n]
<
t; line[n]
++
)
{
if
(Judge(n)
==
1
)
continue
;
else
if
(n
!=
7
)
control(n
+
1
);
else
show();
}
}
/** */
/**
* 显示摆放的结果
*
*/
private
void
show()
{
int
i, j;
for
(i
=
0
; i
<
8
; i
++
)
{
for
(j
=
0
; j
<
8
; j
++
)
{
if
(line[i]
==
j)
System.out.print(
"
Q
"
);
else
System.out.print(
"
*
"
);
}
System.out.println();
}
answer
++
;
System.out.println();
System.out.println(answer);
}
public
static
void
main(String[] args)
{
EightQueen s
=
new
EightQueen();
s.control(
0
);
System.out.println(s.answer);
}
}
这段代码感觉又简洁又易懂,再次感谢他的作者:
http://blog.chinaunix.net/u/26924/showart_228365.html
posted on 2007-02-28 23:38
陈琪
阅读(460)
评论(0)
编辑
收藏
所属分类:
java
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
大数据量insert与update语句的效率问题
八皇后问题
如何在struts中使用tiles