Acwing 3472. 八皇后 递归回溯优化

news/2024/7/20 21:32:40 标签: 深度优先, 算法, c++

原题链接:Acwing 3472. 八皇后
在这里插入图片描述
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
const int M=1e6+10;
int p[1010];
bool f[1010];
vector<int> res[100];
int num=0;

void n_queen(int index)
{
    if(index==9)
    {
        num++;
        for(int i=1;i<=8;i++)
        {
            res[num].push_back(p[i]);
        }
        return ;
    }
    for(int x=1;x<=8;x++)//第x行
    {
        if(f[x]==false)//如果第x行还没有皇后
        {
            bool flag=true;//表示当前皇后不会和之前的皇后冲突
            for(int pre=1;pre<index;pre++)//遍历之前的皇后
            {//第index列皇后的行号为x,第pre列皇后的行号为p[pre]
                if(abs(index-pre)==abs(x-p[pre]))
                {
                    flag=false;//当前行与之前的皇后在同一对角线,冲突
                    break;
                }
            }
            if(flag)//如果可以把皇后放在x行
            {
                p[index]=x;//令第index列皇后的行号为x
                f[x]=true;//标记第x行被占用
                n_queen(index+1);//递归处理第index+1行的皇后
                f[x]=false;//递归完毕,还原第x行为未占用
            }
        }
    }
}
int main()
{
    std::ios::sync_with_stdio(false);
    int n;
    cin>>n;
    n_queen(1);
    while(n--)
    {
        int b;
        cin>>b;
        for(int i=0;i<8;i++)
        {
            cout<<res[b][i];
        }
        cout<<endl;
    }
    return 0;
}


http://www.niftyadmin.cn/n/1265127.html

相关文章

攻击用户

攻击用户攻击用户内容劫持捕获用户输入焦点事件键盘事件鼠标和指针事件表单事件IFrame案件记录社会工程标签绑架全屏UI期望滥用经过签名的Java 小程序隐私攻击不基于Cookie的会话追踪绕过匿名机制攻击密码管理器控制摄像头和麦克风参考文献攻击用户 内容劫持 在被勾连的浏览器…

Acwing 1621. N 皇后问题

原题链接&#xff1a;Acwing 1621. N 皇后问题 这道题开始交上去的时候4个测试点只过了3个&#xff0c;后来才发现原因&#xff1a; 本题是随机给的一段序列&#xff0c;所以我们要判断的不只是每一个皇后是否在一个对角线上&#xff0c;还要判断是否是同一行&#xff0c;上一道…

攻击浏览器

攻击浏览器采集浏览器指纹HTTP请求首部DOM属性DOM属性是否存在使用DOM属性值基于软件bug基于浏览器特有行为绕过cookie检测cookie结构cookie属性失效时间HttpOnly标签安全标签路径属性绕过路径属性限制cookie存储区溢出cookie实现跟踪Sidejacking攻击绕过HTTPS将HTTPS降为HTTP攻…

AcWing 1118 分成互质组 dfs

题目描述&#xff1a; 给定 n 个正整数&#xff0c;将它们分组&#xff0c;使得每组中任意两个数互质。 至少要分成多少个组&#xff1f; 输入格式 第一行是一个正整数 n。 第二行是 n 个不大于10000的正整数。 输出格式 一个正整数&#xff0c;即最少需要的组数。 数据范…

攻击扩展

攻击扩展扩展的结构扩展与插件扩展与附加程序利用特权Firefox扩展Chrome扩展采集扩展指纹HTTP首部使用DOM采集使用清单文件攻击扩展冒充扩展跨上下文脚本攻击&#xff08;XCS&#xff09;中间人攻击绕过Web应用CSP绕过同源策略普遍的XSS攻击跨站点请求伪造&#xff08;XSRF&…

CSP 201803-2 碰撞的小球

原题链接&#xff1a;CSP 201803-2 碰撞的小球 还记得大二的时候我觉得这个题好难。。 #include <bits/stdc.h> using namespace std; #define ll long long const int MAX5e510;struct node {int pos;int v;//小球方向 1表示向右 -1表示向左 }a[110];int main() {std::…

攻击插件

攻击插件理解插件插件与扩展的区别插件与标准程序的区别调用插件点击播放&#xff08;Click to Play&#xff09;采集插件指纹检测插件手动检测自动检测BeEF检测攻击插件绕过点击播放Firefox的示例Java示例攻击JavaJava小程序检测Java破解Java小程序绕过Java沙箱利用Java攻击Fl…

攻击Web应用

攻击Web应用发送跨域请求枚举跨域异常前置请求含义跨域Web应用检测发现内网设备IP地址枚举内部域名跨域 Web 应用指纹采集请求已知资源请求图片请求页面跨域认证检测利用跨站点请求伪造跨站点请求伪造&#xff08;CSRF&#xff09;CSRF攻击密码重置使用CSRF token获得保护通过X…