第七次作业--八皇后问题
来源:互联网 发布:wf入门到精通源码 编辑:程序博客网 时间:2024/04/29 16:15
public class Queen {
public static int num = 0; //累计方案总数
public static final int MAXQUEEN = 8;//皇后个数,同时也是棋盘行列总数
public static int[] cols = new int[MAXQUEEN]; //定义cols数组,表示8列棋子摆放情况
public Queen() {
//核心函数
getArrangement(0);
System.out.print("/n");
System.out.println(MAXQUEEN+"皇后问题有"+num+"种摆放方法。");
}
public void getArrangement(int n){
//遍历该列所有不合法的行,并用rows数组记录,不合法即rows[i]=true
boolean[] rows = new boolean[MAXQUEEN];
for(int i=0;i<n;i++){
rows[cols[i]]=true;
int d = n-i;
if(cols[i]-d >= 0)rows[cols[i]-d]=true;
if(cols[i]+d <= MAXQUEEN-1)rows[cols[i]+d]=true;
}
for(int i=0;i<MAXQUEEN;i++){
//判断该行是否合法
if(rows[i])continue;
//设置当前列合法棋子所在行数
cols[n] = i;
//当前列不为最后一列时
if(n<MAXQUEEN-1){
getArrangement(n+1);
}else{
//累计方案个数
num++;
//打印棋盘信息
printChessBoard();
}
}
}
public void printChessBoard(){
System.out.println("第"+num+"种走法 ");
for(int i=0;i<MAXQUEEN;i++){
for(int j=0;j<MAXQUEEN;j++){
if(i==cols[j]){
System.out.print("Q ");
}else
System.out.print("x ");
}
System.out.println("");
}
}
public static void main(String args[]){
Queen queen = new Queen();
}
}
- 第七次作业--八皇后问题
- 第七次作业
- 第七次作业
- 第七次作业
- 第七次上机作业
- 第七次课后作业
- 第七次作业
- 第七次作业
- 第七次算法作业
- 第七次作业
- 第七次java作业
- 第七次 HTML作业
- C++第七次作业
- c++第七次作业
- C++第七次作业
- 第七次C++作业
- c++第七次作业
- c++第七次作业
- 配电板是什么?
- 文件上传利器SWFUpload入门简易教程
- 黑马程序员_java基础--多线程
- 解决Android中,禁止ScrollView内的控件改变之后自动滚动
- IOS管理文件和目录
- 第七次作业--八皇后问题
- java cookie 详解
- 265行代码实现第一人称游戏引擎
- 设置get,set快捷键
- 鼓励自己
- ADF取得session,调用pop
- SD卡可用空间大小的判断
- 黑马程序员---java基础知识之多线程
- WebService 之 WSDL文件 讲解