题目描述:

Y9J{PKX{Q~5KR)(KTSR22LO.png

解决方法:

递归+回溯

先铺上一层皇后,再铺一层

import java.util.*;

// 2n皇后自己写系列

public class Queen {

static int count,n;

static int[][] map;

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

n = sc.nextInt();

map = new int[n][n]; // 记得要将map实例化

// 将输入数组值放入map

for(int i = 0; i < n; i++){

for(int j = 0; j < n; j++){

map[i][j] = sc.nextInt();

}

}

// 假设放置白皇后的地方放2,放置黑皇后的地方放3

put(0,2);

System.out.println(count);

}

public static void put(int t,int s){

if( t == n){ // 表示白皇后已经放完

if(s == 2) put(0,3); // 此时开始放置黑皇后

else count++; // 如果黑皇后也已经放置完,count++

return;

}

// 挨层放

for( int i = 0; i < n; i++){

if( map[t][i] != 1) continue; // 该位置不可放任何皇后 结束本次循环

if(check(t,i,s)) map[t][i] = s; // 如果该位置可以放 那么放置皇后

else continue; // 该位置不可放置 结束本次循环

put(t+1,s); // 该层放置成功,则开始放置下一层

map[t][i] = 1; // 回溯,如果下一层放置不成功,则回溯,如果两种皇后都放置成功,则测试下一种可能性

}

return;

}

public static boolean check(int t, int i,int s){

for(int q = t-1; q >= 0; q--){ // 测试该列是否已经放置了皇后

if(map[q][i] == s) return false;

}

for(int q = t-1,p = i-1; q >=0 && p >= 0;q--,p--){ // 测试左对角线是否已经放置了皇后

if(map[q][p] == s) return false;

}

for(int q = t-1,p = i+1; q >= 0&& p < n;q--,p++){ // 测试右对角线是否已经放置了皇后

if(map[q][p] == s) return false;

}

return true;

}

}

java 黑皇后_2n皇后问题相关推荐

  1. java程序n体问题_2n皇后问题 (Java代码)详解

    解题思路:先放白皇后再放黑皇后,用for循环一行放一个,逐个位置试一下,检查一下是否能放,知道把最后一个黑皇后放好就count++,回溯法的关键在于,检查这个位置能放皇后,开始放一个(调用函数),在下 ...

  2. JAVA黑白棋之算法浅析

     引言   本为主要对我在开发JAVA黑白棋人机算法过程中所用的博弈思想.估值函数.搜索算法分3个方面进行了阐述,由于本人水平有限,如果大家希望了解更多有关黑白棋博弈策略以及人机算法的深入的理论研究, ...

  3. 2n皇后的问题java_蓝桥杯java 基础练习 2n皇后问题

    问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行.同一列或同一 ...

  4. 蓝桥杯 Java n皇后受伤的皇后2n皇后 详解

    1.n皇后问题 在 n*n 的棋盘上放置 n 个皇后,使它们不同行.不同列.不同对角线.问有多少种合法的情况. 输入 4 输出 2 输入 8 输出 92 首先我们把这个问题看成具体的皇后数量去思考,比 ...

  5. 用java实现八皇后问题_使用java语言实现八皇后问题

    八皇后问题,在一个8X8的棋盘中,放置八个棋子,每个棋子的上下左右,左上左下,右上右下方向上不得有其他棋子.正确答案为92中,接下来用java语言实现. 解: package eightQuen; / ...

  6. 【Java】求解N皇后问题

    代码实现: import java.util.Scanner;public class Queen {/*** 定义皇后的位置向量*/int[] queue;/*** 定义皇后数*/int queue ...

  7. java中经典八皇后难题_Java实现经典八皇后的问题

    今天自己实现了八皇后的问题,其实代码并不长,但是关于虚拟机中怎样实现的想了好长时间特别是红色部分.现在还是有点不是很明白.代码如下,已经实现运行. public class EightQueen { ...

  8. Java数据结构算法之八皇后问题

    八皇后问题是由国际象棋手马克斯-贝瑟于1848年提出的问题,是回溯算法的经典案例. 问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上 ...

  9. java 黑窗运行_javaday1 如何使用黑窗口打出helloworld并且要学会使用和环境配置/eclipse...

    java 第一天要学会如何使用黑窗口打出helloworld并且要学会使用和环境配置/eclipse 其实我是一直都想早点儿写点儿学习笔记的,但是太懒了一直拖到了今天,好吧我已经学习了java一个月了 ...

最新文章

  1. ABP学习 解决:Update-Database : 无法将“Update-Database”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的问题
  2. FileUpload控件
  3. 6、mysqldump备份数据库(附带实例)
  4. MyBatis 源码解读-loadCustomVfs(settings)
  5. leetcode674. 最长连续递增序列
  6. Linux操作Oracle(4)——查看oracle后台进程的方法【windows系统/Linux系统】
  7. 那些唱衰智能电视的砖家们可以闭嘴了
  8. Spring Boot中的事务管理与手把手实战
  9. 计算机科学与技术实践教学,计算机科学与技术实践教学方法_精编版.doc
  10. C:\Windows\System32\drivers\etc下的hosts修改方法
  11. java开发系统架构_Java开发:ECP系统J2EE架构开发平台
  12. [OpenAirInterface实战-5] :OAI支持的5G gNB功能集
  13. Linux FTP服务器虚拟用户登录
  14. 8-数据可视化-地图可视化
  15. Android:浏览图片,点击放大至全屏效果
  16. 微服系列之Feign使用HttpClient和OkHttp网络请求框架
  17. 关于memset(G,0x3f,sizeof(G))的说明
  18. 【201903-1】小中大
  19. 管理日常工作、生活琐事的待办事项提醒工具便签
  20. Matlab对图像做傅里叶变换

热门文章

  1. 小程序服务器布置云端费用,程序员的小目标:从云端搭建一个小程序开始
  2. Excel双引号拼接问题
  3. (干货)Ai音箱和Linux音频驱动小谈
  4. pbhelper_pb6-2019R3
  5. 微信小程序学习笔记-自定义组件
  6. Maven-什么是Maven
  7. iphone5s 耳机更换插头 EarPods change jack
  8. MySQL模糊查询%
  9. 网站静态化处理—缓存
  10. 人工智能体验之为你写诗应用