N皇后问题
来源:互联网 发布:eureka java demo 编辑:程序博客网 时间:2024/04/30 09:08
一、问题描述:
在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。
输入:
给定棋盘的大小n (n ≤ 13)
输出:
输出有多少种放置方法。
代码:
package BackTrack;import java.util.Scanner;public class Q { static int n; static int count; public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in); n=scanner.nextInt(); int [][]chess=new int[n+1][n+1]; putchess(1,chess);//从第一行开始,也是第一个 System.out.println(count); } private static void putchess(int i,int [][]chess) {//第i行,也是第i个 if(i>n) { showchess(chess); return ; } for(int j=1;j<=n;j++)//n列 { if(check(i, j,chess)) { chess[i][j]=1; putchess(i+1,chess); chess[i][j]=0; //还原 } } } private static void showchess(int [][]chess) { count++; System.out.println("第"+count+"种"); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(chess[i][j]==1) System.out.print(i+":"+j+" ");// System.out.print(chess[i][j]+" "); }// System.out.println(); } System.out.println(); } private static boolean check(int i,int j,int [][]chess) { for(int ii=1;ii<i;ii++) { for(int jj=1;jj<=n;jj++) { if((chess[ii][jj]==1)&&(jj==j||Math.abs(j-jj)==Math.abs(i-ii))) return false; } } return true; }}
0 0
- N*N皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N 皇后问题
- N皇后问题
- N皇后问题算法
- N 皇后问题
- N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N皇后问题优化
- N皇后问题
- n皇后问题
- N皇后问题
- python的import与from...import的不同之处
- 大话设计模式读书笔记(五) 代理模式
- 深度机器学习中的batch的大小对学习效果有何影响?
- BZOJ P3294[Cqoi2011]放棋子
- 全排列 next_permutation
- N皇后问题
- JS:切换导航栏,当前导航栏样式
- 如何重置CentOS7的Root密码
- 远程访问neo4j
- 第五届蓝桥杯省赛--神奇算式
- HTML有2种路径的写法:绝对路径和相对路径
- 并发编程--并发编程框架概述
- SAP HANA XS创建JOB举例
- 鸟哥的服务器《九》动态路由器