八皇后问题
来源:互联网 发布:经济结构优化 编辑:程序博客网 时间:2024/05/16 08:14
回溯法解决八皇后问题
- 八皇后问题,国际象棋是8x8的棋盘,其中皇后可以斜着走,竖着走,横着走,无距离限制
- 问:如果在这个棋盘上面摆满8个皇后,同时相互不被吃掉
public class QueenSort { static int count = 1; public static void main(String[] args) { int arr[][] = new int[8][8]; putQueen(arr,0); //show(arr); } public static void show(int arr[][]){ System.out.println("第"+count+"摆法"); for(int i=0;i<arr.length;i++){ for(int j=0;j<arr.length;j++){ System.out.print(arr[i][j]+"\t"); } System.out.println(); } count ++; } /** * * @return 该格是否可以存放皇后 */ public static boolean check(int arr[][],int row,int col){ //行方向不用判断,原因是我们的走法是从左至右边 //只判断3个方向的原因是,从下往上走(假设00下标在最左下角) //列方向 for(int i=row-1;i>=0;i--){ if(arr[i][col] == 1) return false; } //左斜上 for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--){ if(arr[i][j] == 1) return false; } //右斜上 for(int i=row-1,j=col+1;i>=0&&j<8;i--,j++){ if(arr[i][j] == 1) return false; } return true; } //存放queen public static void putQueen(int arr[][],int row){ for(int i=0;i<8;i++){ if(check(arr,row,i)){ arr[row][i] = 1; if(row>=7){ show(arr); }else{ putQueen(arr,row+1); } arr[row][i] = 0; //递归回走就设置为0 } } }}
阅读全文
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 指针与数组的区别
- CImage 对话框初始化时候显示透明 PNG
- Ubuntu-install-keras-cuda-tensorflow/theano
- 机器学习-感知机笔记(题目举例和代码解答)
- 接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 八皇后问题
- java如何实现向word文档中插入柱状图,并更改颜色
- Windows10下虚拟机VMware10安装Centos7-网络配置篇
- 星河研究院:在自动驾驶领域到底是做青蛙还是做天鹅?(下)
- ABB收购B&R,重金补课“叫板”西门子
- 深度 | 火爆之后回归现实,聊天机器人应该如何重回巅峰?
- A系新品发布,微鲸表示“不能耍猴”
- [学习随笔]并发编程与多线程一
- 字符串分隔java