走进“深度搜索基础训练“,踏入c++算法殿堂(一)

简介: 走进“深度搜索基础训练“,踏入c++算法殿堂(一)

小航走入赛场,比赛即将开始……

主持人:欢迎来到深度搜索基础训练的比赛现场。首先,感谢全心全意为我们挖坑、绞尽脑汁出难题的出题老师们;然后,感谢古灵精怪的农夫John;最后,感谢c++……废话少说,比赛开始!

小航看向第一题……

【搜索与回溯算法】N皇后问题
时间限制: 1000 ms 空间限制: 262144 KB 具体限制

题目描述:

在一个nXn的国际象棋棋盘上放置n(n<=12)个皇后,使它们不能互相攻击(即任意两个皇后不能在同一行、同一列或同一对角线上)。试求出所有方法。

输入:

输入一个数n .(n<=12)

输出:

输出所有的排列方案总数。

样例输入:

4
样例输出:

2
“思路是
:循环行,一列一列地试……”小航想道。接着,写下了代码。

#include<iostream>
using namespace std;
int a[105],b[105],c[105],n,s;//数组a为判断列是否放置皇后,b、c都是判断对角线是否放置皇后
void dg(int x)//循环行
{
    for(int i=1;i<=n;i++)//循环列
    {
        if(a[i]!=1&&b[x+i]!=1&&c[i-x+n-1]!=1)
        {
            a[i]=1;
            b[i+x]=1;
            c[i-x+n-1]=1;//上面两步及这步都是标记
            if(x==n)
            {
                s++;//当放到最后一个,方案数增加
            }
            else
            {
                dg(x+1);//进入下一行放置

            }    
                a[i]=0;
                b[i+x]=0;
                c[i-x+n-1]=0;//回溯
        } 
    } 
}
int main()
{
    cin>>n;
    dg(1);
    cout<<s;//输出方案数
}
    小航很快就把第一道题做完了,准备迎接下一题……
相关文章
|
19天前
|
算法 搜索推荐 数据库
二分搜索:高效的查找算法
【10月更文挑战第29天】通过对二分搜索的深入研究和应用,我们可以不断挖掘其潜力,为各种复杂问题提供高效的解决方案。相信在未来的科技发展中,二分搜索将继续发挥着重要的作用,为我们的生活和工作带来更多的便利和创新。
30 1
|
1月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
63 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
23天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
1月前
|
算法 决策智能
基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数
该程序基于禁忌搜索算法求解车辆路径问题(VRP),使用MATLAB2022a版本实现,并带有GUI界面。用户可通过界面设置参数并查看结果。禁忌搜索算法通过迭代改进当前解,并利用记忆机制避免陷入局部最优。程序包含初始化、定义邻域结构、设置禁忌列表等步骤,最终输出最优路径和相关数据图表。
|
1月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
480 0
高精度算法(加、减、乘、除,使用c++实现)
|
1月前
|
算法 数据处理 C++
c++ STL划分算法;partition()、partition_copy()、stable_partition()、partition_point()详解
这些算法是C++ STL中处理和组织数据的强大工具,能够高效地实现复杂的数据处理逻辑。理解它们的差异和应用场景,将有助于编写更加高效和清晰的C++代码。
25 0
|
1月前
|
存储 算法 决策智能
【算法】博弈论(C/C++)
【算法】博弈论(C/C++)
|
1月前
|
存储 算法 C++
【算法】哈希映射(C/C++)
【算法】哈希映射(C/C++)
|
1月前
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)
下一篇
无影云桌面