蓝桥杯 - 受伤的皇后

news/2024/4/29 12:55:29

解题思路:

递归 + 回溯(n皇后问题的变种)

在 N 皇后问题的解决方案中,我们是从棋盘的顶部向底部逐行放置皇后的,这意味着在任何给定时间,所有未来的行(即当前行之下的所有行)都还没有被探查或放置任何皇后。因此,检查下方行是没有意义的,因为它们总是空的。所以只需要检查左上45°和右上45°。

import java.util.Scanner;public class Main {static int count = 0;public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[][] arr = new int[n][n];dfs(arr, 0);System.out.println(count);}public static void dfs(int[][] arr, int row) {if (row == arr.length) {count++;return;}// 遍历列,因为n行n列,所以arr.length和arr[0].length是一样的for (int j = 0; j < arr.length; j++) {if (checkValid(arr, row, j)) {arr[row][j] = 1;dfs(arr, row + 1);// 回溯arr[row][j] = 0;}}}public static boolean checkValid(int[][] arr, int row, int col) {// 检查列,因为n行n列,所以row既是行的长度又是列的长度for (int i = 0; i < row; i++) {if (arr[i][col] == 1) {return false;}}// 检查左上45°for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {if (arr[i][j] == 1 && Math.abs(row - i) < 3) {return false;}}// 检查右上45°for (int i = row - 1, j = col + 1; i >= 0 && j < arr.length; i--, j++) {if (arr[i][j] == 1 && Math.abs(row - i) < 3) {return false;}}return true;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11532.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库(一)

文章目录 1.MySQL8.0安装配置1.安装教程2.启动方法3.启动注意事项4.Navicat使用5.Navicat演示 2.MySQL数据库基本介绍1.三层结构2.SQL语句分类 3.MySQL数据库基本操作1.创建数据库2.不区分大小写的校对规则3.查看、删除数据库4.备份和恢复数据库1.备份数据库db01和db02&#xf…

Python(乱学)

字典在转化为其他类型时&#xff0c;会出现是否舍弃value的操作&#xff0c;只有在转化为字符串的时候才不会舍弃value 注释的快捷键是ctrl/ 字符串无法与整数&#xff0c;浮点数&#xff0c;等用加号完成拼接 5不入&#xff1f;&#xff1f;&#xff1f; 还有一种格式化的方法…

人工智能产业应用--具身智能

五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时&#xff0c;“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角&#xff0c;尤其是在具身智能的领域。具身智能是一种思想&#xff0c;强调智能体通过与其环境的直接物理互动来实现智能行为。然…

C#简单——多选框控件相关的神奇问题

他们真的很简单&#xff0c;但我怎么总是忘记啊QAQ 还是记下来吧&#xff0c;下次直接copy 点开后出现 有列名 列名有数据&#xff0c;有表 表里有数据但不显示的情况 解决&#xff1a;点击小三角-点击Design View-Columns-需要在这里对下拉列表里的内容进行对应配置。 多选框…

WP Rocket v3.15.10最新版强大的WordPress缓存插件

WP Rocket v3.15.10是一款强大的WordPress缓存插件&#xff0c;它通过一系列优化措施来提高网站的速度和性能。 WP Rocket与免费缓存插件相比&#xff0c;提供了更丰富和高级的自定义设置功能。这些包括媒体优化、预加载、延迟加载和数据库优化等。特别是对于没有任何缓存技术…

java自动化学习-03-02java基础语法01

1、java基础语法 在JAVA中源文件名称必须和主类名称相同 源文件名&#xff1a;源文件名必须和类名相同。当保存文件的时候&#xff0c;你应该使用类名作为 文件名保存&#xff08;切记 Java 是大小写敏感的&#xff09;&#xff0c;文件名的后缀为 .java。&#xff08;如果文…