资源简介
本资源包含了八皇后算法分析文档、流程图和Java源代码,解决方案具有很强的通用性,可以根据需要实现N个皇后的摆放,eclipse环境中编译通过,运行正确。
代码片段和文件信息
//place()方法负责从第i行开始摆放皇后
package myqueen;
public class Queen
{
private final int size;//棋盘的大小,也表示皇后的数目
private int[] location;//皇后在棋盘上的位置
private int[] column;//皇后在棋盘上占据的列
private int[] cross1;//皇后在棋盘上占据的某一条左低右高的对角线
private int[] cross2;//皇后在棋盘上占据的某一条左高右低的对角线
private static int count;//解决方案的个数
private static final int STATUS_OCCUPIED=1;//占据状态
private static final int STATUS_OCCUPY_CANCELED=0;//未占据状态
public Queen(int size)
{
this.size=size;
location=new int[size];
column=new int[size];
cross1=new int[2*size];
cross2=new int[2*size];
}
public void printLocation()
{
System.out.println(“皇后在棋盘上的第“+count+“种摆放方式:“);
for(int i=0; i {
System.out.println(“行:“+i+“ 列:“+location[i]);
}
}
/**判断位置(i j)是否被占据*/
private boolean isOccupied(int i int j)
{
return ((column[j] == STATUS_OCCUPIED)
|| (cross1[i+j] == STATUS_OCCUPIED)
|| (cross2[i-j+size-1] == STATUS_OCCUPIED));
}
/**如果参数flag为1,表示占据位置(i j)
* 如果参数flag为0,表示取消占据位置(i j)*/
private void setStatus(int i int j int flag)
{
column[j] = flag;//宣布占据或者取消占据第j列
cross1[i+j] = flag;//宣布占据或者取消占据左低右高的对角线
cross2[i-j+size-1] = flag;//宣布占据或者取消占据左高右低的对角线
}
/**从第i行开始摆放皇后*/
public void place(int i)
{
for(int j=0; j {
if(!isOccupied(i j))//判断该位置是否被占据
{
location[i]=j;//皇后占据第i行第j列
setStatus(i j STATUS_OCCUPIED);//宣布占据(i j)位置
if(i < (size-1))
{
place(i+1);//递归摆放下一行的皇后
}
else
{
count++;//统计解决方案的个数
printLocation();//完成任务,打印所有皇后的位置
}
setStatus(i j STATUS_OCCUPY_CANCELED);
}
}
}
public void start()
{
place(0);
}
public static void main(String[] args)
{
new Queen(8).start();//通过修改参数实现不同个数的皇后摆放
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2121 2009-04-29 11:09 myqueen\Queen.java
文件 1975 2009-04-29 11:09 myqueen\Queen.class
文件 26624 2009-04-29 11:06 myqueen\八皇后问题算法分析.doc
文件 32256 2009-04-29 11:04 myqueen\从第i行开始摆放皇后的流程图.doc
目录 0 2009-04-28 22:36 myqueen
----------- --------- ---------- ----- ----
62976 5
相关资源
- jsplumb和jsplumbtoolkit
- Unigui jsPlumb Demo流程图.rar
- 模拟退火 基因算法 八皇后问题
- jsplumb实现的简易流程图画图工具
- java流程图生成器
- Java+MySQL+图形界面通讯录软件含效果图
- 自动画流程图Visustin v1
- cc++python源代码生成流程图
- Code Visual to Flowchart (Version 6.0) 破解
- jbpm流程图状态显示
- 基于JAVA的动态八皇后游戏互动
- Java Web开发流程图--适合刚学Web开发的
- Hopfield神经网络的实现(java实现)
- 银行账户管理系统 java课程设计 流程
- Java软件开发流程图Visio 2013.vsdx
- jsp 论坛系统论文 bbs 含E-R图及流程图
- 易事装完整项目设计文档、需求文档
评论
共有 条评论