资源简介

本资源包含了八皇后算法分析文档、流程图和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


评论

共有 条评论