当前位置: 首页 > news >正文

SCAU18124--N皇后问题

18124 N皇后问题

时间限制:5000MS  代码长度限制:10KB
提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC;VC

Description

有N*N的国际象棋棋盘,要求在上面放N个皇后,要求任意两个皇后不会互杀,有多少种不同的放法?



 

输入格式

每一个数为T,代表CASE的数量,T<=13
此后,每行一个数N(13>=N>0)


 

输出格式

每一个CASE,输出对应答案


 

输入样例

2
4
5


 

输出样例

2
10
回溯算法
#include <iostream>
#include <vector>
using namespace std;int totalSolutions = 0;void solveNQueens(int row, int n, vector<int>& col, vector<int>& diag1, vector<int>& diag2) {if (row == n) {totalSolutions++;return;}for (int c = 0; c < n; ++c) {if (!col[c] && !diag1[row + c] && !diag2[row - c + n - 1]) {col[c] = diag1[row + c] = diag2[row - c + n - 1] = 1;solveNQueens(row + 1, n, col, diag1, diag2);col[c] = diag1[row + c] = diag2[row - c + n - 1] = 0;}}
}int main() {int T;cin >> T;while (T--) {int n;cin >> n;totalSolutions = 0;vector<int> col(n, 0);//列vector<int> diag1(2 * n - 1, 0);//从左上到右下的对角线vector<int> diag2(2 * n - 1, 0);//从右上到左下的对角线solveNQueens(0, n, col, diag1, diag2);cout << totalSolutions << endl;}return 0;
}

在回溯算法中,我们使用两个数组 diag1 和 diag2 来标记对角线的占用情况:

  1. diag1[row + col]

    • 表示副对角线(因为 row + col 是副对角线的唯一标识)。

    • 大小为 2n - 1(因为 row + col 的取值范围是 [0, 2n-2])。

  2. diag2[row - col + n - 1]

    • 表示主对角线(通过 row - col + n - 1 将负值映射到正索引)。

    • 大小为 2n - 1(因为 row - col 的取值范围是 [-(n-1), n-1])。

示例(N=4)

  • 主对角线 row - col 的可能值:-3, -2, -1, 0, 1, 2, 3。

    • 通过 row - col + 3 映射为索引:0, 1, 2, 3, 4, 5, 6。

  • 副对角线 row + col 的可能值:0, 1, 2, 3, 4, 5, 6(直接作为索引)。

相关文章:

  • 使用xlwings将excel表中将无规律的文本型数字批量转化成真正的数字
  • C++ 循环语句`while`、`for` 与 `do…while`(六十七)
  • C# 操作符
  • 多协议 Tracker 系统架构与传感融合实战 第五章 卡尔曼滤波定位算法实战
  • 计算机网络八股文--day4 --传输层TCP与UDP
  • k8s 探针
  • TFT(薄膜晶体管)和LCD(液晶显示器)区别
  • Socket 编程 UDP
  • 基于LangChain 实现 Advanced RAG-后检索优化(下)-上下文压缩与过滤
  • 基于Springboot高校网上缴费综合务系统【附源码】
  • SpringSecurity配置(权限认证)
  • redis延时队列详细介绍
  • 计算机基础:二进制基础17,八进制减法
  • 第 13 届蓝桥杯 C++ 青少组省赛中 / 高级组 2022 年真题(编程第一题)
  • 360驱动大师v2.0(含网卡版)驱动工具软件下载及安装教程
  • 【AI面试准备】银行UI测试效率提升案例解析
  • LeetCode算法题 (设计链表)Day16!!!C/C++
  • [Vue]props解耦传参
  • Python刷题:流程控制(下)
  • 基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究
  • 吴清稳市场稳预期发布会十要点:谈平准基金、股市稳定、公募改革和巴菲特
  • 碧桂园服务:拟向杨惠妍全资持有的公司提供10亿元贷款,借款将转借给碧桂园用作保交楼
  • 贵州省黔西市发生载人游船侧翻事故
  • 加拿大总理将赴美同特朗普会晤,重点谈贸易压力
  • 短剧迷|《权宠》一出,《名不虚传》
  • 五一首日出沪高峰,G1503高东收费站上午车速约30公里/小时