程序员面试题精选100题(58)-八皇后问题

Camera 基础知识 Raw Sensor输出的Data格式为Raw,图像的效果处理使用BB端的ISP,BB端接收Raw data后进行一系列的图像处理(OB,Shading,AWB,Gamma,EE,ANR等),效果方面由BB端控制,需要针对不同的模组进行效果调试,Raw sensor是目前的主流,数据量比YUV Sensor小(RAW10 格式的sensor 1个pixel 10个bit)使用平台ISP处理,能支持较大的size。不过,相位对焦并不是那么完美,它对光线的要求就比较高,在弱光拍摄环境下,相位对焦就无能威力了。 阅读详情

题目:在 8 × 8 的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这就是有名的八皇后问题。解决这个问题通常需要用递归,而递归对编程能力的要求比较高。因此有不少面试官青睐这个题目,用来考察应聘者的分析复杂问题的能力以及编程的能力。

由于八个皇后的任意两个不能处在同一行,那么这肯定是每一个皇后占据一行。于是我们可以定义一个数组 ColumnIndex[8] ,数组中第 i 个数字表示位于第 i 行的皇后的列号。先把 ColumnIndex 的八个数字分别用 0-7 初始化,接下来我们要做的事情就是对数组 ColumnIndex 做全排列。由于我们是用不同的数字初始化数组中的数字,因此任意两个皇后肯定不同列。我们只需要判断得到的每一个排列对应的八个皇后是不是在同一对角斜线上,也就是数组的两个下标 i 和 j ,是不是 i-j==ColumnIndex[i]-Column[j] 或者 j-i==ColumnIndex[i]-ColumnIndex[j] 。

关于排列的详细讨论,详见本系列博客的第 28 篇,《 字符串的排列 》,这里不再赘述。

接下来就是写代码了。思路想清楚之后,编码并不是很难的事情。下面是一段参考代码:

int g_number = 0;

 

void EightQueen()

{

    const int queens = 8;

    int ColumnIndex[queens];

    for (int i = 0; i < queens; ++ i)

        ColumnIndex[i] = i;

 

    Permutation(ColumnIndex, queens, 0);

}

 

void Permutation(int ColumnIndex[], int length, int index)

{

    if (index == length)

    {

        if (Check(ColumnIndex, length))

        {

            ++ g_number;

            PrintQueen(ColumnIndex, length);

        }

    }

    else

    {

        for (int i = index; i < length; ++ i)

        {

            int temp = ColumnIndex[i];

            ColumnIndex[i] = ColumnIndex[index];

            ColumnIndex[index] = temp;

 

            Permutation(ColumnIndex, length, index + 1);

 

            temp = ColumnIndex[index];

            ColumnIndex[index] = ColumnIndex[i];

            ColumnIndex[i] = temp;

        }

    }

}

 

bool Check(int ColumnIndex[], int length)

{

    for (int i = 0; i < length; ++ i)

    {

        for (int j = i + 1; j < length; ++ j)

        {

            if ((i - j == ColumnIndex[i] - ColumnIndex[j])

                || (j - i == ColumnIndex[i] - ColumnIndex[j]))

            return false ;

        }

    }

 

    return true ;

}

 

void PrintQueen(int ColumnIndex[], int length)

{

    printf("Solution %d/n" , g_number);

 

    for (int i = 0; i < length; ++i)

        printf("%d/t" , ColumnIndex[i]);

   

    printf("/n" );

}

 

出处 http://zhedahht.blog.163.com/ 。

卷积神经网络中的自注意力机制(Self-Attention Mechanism) 卷积神经网络中的机制表现为操作,其实现过程与Seq2Seq模型的自注意力机制类似。标准的卷积层是一种局部滤波操作,其输出特征上的任意位置是由对应输入特征的一个邻域构造的,只能捕捉局部特征之间的关系。而自注意力机制通过计算任意两个位置之间的关系直接捕捉远程依赖,而不用局限于相邻点,相当于构造了一个的卷积核,从而可以捕捉更多信息。在卷积网络的自注意力机制中,首先构造输入特征x的键特征fx, 查询特征gx和值特征hx; 阅读详情

相关推荐

Vivado ILA抓不到低频信号?试试Capture Control模式,保姆级配置教程(附PWM调试实例)

本文详细解析了Vivado ILA的Capture Control模式在低频信号捕获中的应用,特别针对PWM调试等场景提供保姆级配置教程。通过条件采样和时间拉伸技术,有效解决传统ILA采样在低频信号调试中的存储深度不足、关键信号丢失等问题,并附赠呼吸灯PWM的完整调试实例,帮助FPGA开发者提升调试效率。

weixin_42549451的博客 350

习题:八皇后问题

题目 八皇后问题,在 8×8 的国际象棋棋盘上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法,并打印每一种摆法。

weixin_43374839的博客 1001

【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫

军事上的演练,是除了实战以外最能检验军队战斗力的一种考核方式,他可以模拟面对外部势力的攻击时候,如何更好的去维护国家和主权的安全。同样的,在网络上面,真实环境下的网络攻防演练也是检验一个单位,企业网络防御能力,发现潜在危险最好的方法。1.政策要求2安全威胁驱动当前,我国关键信息基础设施面临的网络安全形势严峻复杂,网站平台大规模数据泄露事件频发,生产业务系统安全隐患突出,甚至有的系统长期被控面对高级持续性的网络攻击,防护能力十分欠缺。目前,我国面临的网络安全威胁主要有以下几点。

wxh的博客 1574

回溯算法之八皇后问题

N 皇后问题是在N×N 的国际象棋棋盘上, 放置N 个皇后,使任何两个皇后都不能相互攻击。也就是说, 任何两个皇后, 都不在同一行、同一列或同一斜线上。N 皇后问题是由八皇后问题演化而来的。八皇后问题于1848 年由国际象棋棋手MaxBazzel 提出。八皇后问题自从提出之后, 吸引了许多著名数学家的关注, 其中包括Carl Gauss。近年来, N 皇后问题成为计算机应用领域内的一个经典问题,

马里奥的专栏 2195

三、分区配置

rk3566/rk3568 修改分区

暮云星影的博客 514

从零到一:Quartus II连接开发板实战,打通绘图、管脚分配、编译与下载全链路

本文详细介绍了使用Quartus II软件连接FPGA开发板并完成首个项目的全流程。从硬件连接到驱动安装,到绘制电路框图、精准分配管脚,再到编译设置与最终下载,手把手指导您打通从设计到硬件实现的完整链路,是FPGA初学者的实战入门指南。

mqtt6iot的博客 717

一、八皇后问题

一、八皇后问题 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置方法。 Input 共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。 Output 共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。 S...

qq_42569807的博客 289

VMD-CNN-BiLSTM-Attention预测模型 —— 数学模型介绍&完整实例代码

想解决电力负荷预测中的非线性、非平稳难题?这篇博客介绍了一种创新混合模型,结合变分模态分解(VMD)和CNN-BiLSTM-Attention深度学习架构,实现超高精度预测! ✨ 核心亮点: ✅ VMD分解:有效分离复杂负荷信号,提取关键频率特征 ✅ 混合深度学习:CNN捕捉局部模式 + BiLSTM学习长时序依赖 + 注意力机制聚焦关键时段 ✅ 端到端优化:从数据预处理(滑动窗口、归一化)到模型训练(MSE损失+Adam优化),完整流程公开! ✅ 工业级评估:提供MSE、MAE、MAPE、R²多指标验证

qq_42924330的博客 1653

算法分析:回溯法之八皇后

一、描述 八皇后问题(英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。 问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决

Name Yan 331

CentOS7下快速修复libssl.so.1.1缺失问题(附腾讯云镜像加速下载)

本文详细介绍了在CentOS7系统中快速修复libssl.so.1.1缺失问题的工程化实践方案。通过编译安装OpenSSL 1.1.x版本、配置动态链接器及创建符号链接等步骤,有效解决共享对象文件缺失问题,并提供了腾讯云镜像加速下载的优化方案,帮助开发者高效部署现代应用。

weixin_33711647的博客 367

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

【人工智能】CSP问题全解全练

【人工智能】CSP问题全解全练例题构建 CSP 框架地图上色问题国际象棋的八王后问题上课问题参考文献 例题 由计算工具解决的很大一部分问题都可以归类为约束满足问题(CSPs, constraint-satisfaction problems)。CSP 一般包含三个基本概念:变量(variables)、域(domains)和约束条件(constraints)。比如需要在星期五为 Joe、Mary、Sue 三个人安排一场会议,要求 Sue 必须和另外的至少一个人同时在场。针对此问题: Joe、Mary、

一拳Marx 4373

基于STM32设计的智能厨房环境监测报警系统_426

随着天然气、液化石油气等可燃性气体在家庭中的广泛应用,燃气泄漏所引发的安全问题日益突出。针对传统家用可燃气体报警器功能单一、信息获取受限以及缺乏远程监测能力等不足,设计了一种基于STM32单片机的家用可燃气体报警器系统。

761

[程序员面试题精选100题]58.八皇后问题

题目在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。思路这就是有名的八皇后问题。解决这个问题通常需要用递归,而递归对编程能力的要求比较高。因此有不少面试官青睐这个题目,用来考察应聘者的分析复杂问题的能力以及编程的能力。由于八个皇后的任意两个不能处在同一行

SmartSi 1986

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

程序员面试题精选100题(58)-八皇后问题[算法]

题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。

GarfieldEr007的专栏 1831

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

程序员面试题精选100题(58)-八皇后问题[算法] 【用到了全排列问题】

本文转自: http://zhedahht.blog.163.com/blog/static/2541117420114331616329/ 题目:在8×8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行、同一列或者同一对角斜线上。下图中的每个黑色格子表示一个皇后,这就是一种符合条件的摆放方法。请求出总共有多少种摆法。    

355

程序员面试题精选100题:51-63解题报告

程序员面试题精选100题(51)-顺时针打印矩阵[算法]   题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1              2              3              4 5              6              7              8 9              10

nanjunxiao的专栏 1739

八皇后问题-python描述

八皇后问题-python描述 问题描述: 在8*8的棋盘上放置八个皇后,任意两个皇后都不能处于同一行、列或者同一斜线上。 ①首先初始化一个列表用来存放每行皇后在的位置,下标对应行,值对应列 array = [0 for i in range(0)] ②然后判断当前位置相同的列上,对角线和对反对角线上是否没有其他皇后。 判断代码如下: def judge(n,array): """判断是否...

weixin_43919497的博客 522

在8*8的国际象棋棋盘上,安放8个皇后,要求没有一个皇后能够“吃掉”其他一个皇后,即任意两个皇后都不能处于同一行,同一列或同一条对角线上这样的格局称为问题的一个解。(后面有n*n皇后)

步骤: 由于任意两个皇后不能同行,及每一行只能放置一个皇后,因此将第i个皇后放置在第i行中。这样在放置第i个皇后时,只要考虑他与前i-1个皇后处于不同列和不同对角线位置即可。 程序中设计了3个函数: 1.函数Check()用来判断皇后所放位置(row,column)是否可行 2.函数Output()用来输出可行解,及输出棋盘 3.函数EightQueen()采用递归算法实现在row行放置皇后 算法分析: 对于八皇后求解可采用回溯算法,从上之下依次在每一行放置皇后,进行搜索,若在某一行的任意一..

qq_64874743的博客 2867

八皇后问题-dfs

一、题意解析   国际象棋中的皇后,可以横向、纵向、斜向移动。如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线、竖线、斜线方向上?八皇后问题是一个古老的问题,于1848年由一位国际象棋棋手提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,如何求解?以高斯为代表的许多数学家先后研究过这个问题。后来,当计算...

dengpan1889的博客 461

八皇后问题

回溯算法经典案例——八皇后问题 题目描述: 在8*8的国际象棋上摆放八个皇后,使任意两个皇后都不能处于同一行,同一列或同一斜线上,问有多少种摆法 idea: 先把第一个黄后放在(1,1) 再把第二个皇后放在(2,1), (2,2),…直到找到一个解为止 continue 只要得到一个答案,就会开始回溯,即将第一个皇后再放置在第一行的其他列,反复上述过程 核心代码 void Print(); void Print() { for (int i = 0; i < n; i++) { print

weixin_45776185的博客 915
上一篇: 深刻剖析经典面试题之一:堆和栈的区别
下一篇: 错误:预编译头文件 fatal error C1083: Cannot open precompiled header file: 'Debug
chennut0802
博客等级 码龄19年 6粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值