八皇后问题
来源:互联网 发布:网络流行的词 编辑:程序博客网 时间:2024/05/29 19:03
题目描述
请设计一种算法,解决著名的n皇后问题。这里的n皇后问题指在一个nxn的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。
给定一个int n,请返回方法数,保证n小于等于10
测试样例:
1
输出:
1
import java.util.*; public class Queens { public int sum=0; public int nQueens(int n) { sum=0; int[] cols=new int[n]; helper(cols,n,0); return sum; } //n是总行数,row是已经探测到的行数,cols是一个竖列数组,下标是row,值是column的值 private void helper(int[] cols, int n, int row){ if(row==n){//走到这一步的都成功了 sum++; return; } for(int i=0;i<n;i++){//这种做法很像是求字符串的全排列 if(isValid(cols,row,i)){//如果没有valid将会退出,不会继续下去,这条线也就是断了 cols[row]=i; helper(cols,n,row+1); }else continue; } } private boolean isValid(int[] cols, int row, int col){//可以放置 for(int i=0;i<row;i++){ if(cols[i]==col){//不能有同列的,同行的不会,因为是row+1来遍历的 return false; } if((row-i)==Math.abs(cols[i]-col)){//不能对角线 return false; } } return true; } }
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- Android 系统 root 破解原理分析
- 系统表查询
- stty命令
- android开发中Design Support Library完全使用实例
- Volley底层实现解释笔记
- 八皇后问题
- Apache下配置虚拟域名
- SwipeRefreshLayout,设置setRefreshing(true)没效果的解决方案
- maven仓库上传jar包
- SpringMVC接受复杂json数据类型
- Centos上源码安装Hadoop2.7.2
- future给任务设置时限
- js调用php和php调用js的方法举例
- OpenCV学习:人脸识别 简单程序