首页 > 其他分享 >N皇后问题拓展(DFS)

N皇后问题拓展(DFS)

时间:2024-02-11 13:11:37浏览次数:35  
标签:int res 30 拓展 step DFS 皇后

之前用DFS模板写的N皇后问题是采用打表的形式,先把皇后放好再遍历,这样做适合N小于11的问题,写洛谷的题的时候看到了这个N是大于11的,需要新的方法来解决,打表是不适用的。

P1219 [USACO1.5] 八皇后 Checker Challenge - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<iostream>
using namespace std;
int n,m1[30],m2[30],m3[30],ans[15],res=0;
void setvalue(int step,int j,int k){
    ans[step]=j;
    m1[j]=k;
    m2[j+step]=k;
    m3[step-j+n]=k;
}
void dfs(int step){
    if(step>n){
        res++;
        if(res<=3){
            for(int i=1;i<=n;i++) cout<<ans[i]<<" ";
            cout<<endl;
        }
        return;
    }
    for(int j=1;j<=n;j++){
        if(m1[j] || m2[step+j] || m3[step-j+n]) continue;
        setvalue(step,j,1);
        dfs(step+1);
        setvalue(step,j,0);
    }
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    dfs(1);
    cout<<res<<endl;
    
    return 0;
}

 

标签:int,res,30,拓展,step,DFS,皇后
From: https://www.cnblogs.com/accbulb/p/18013320

相关文章

  • 力扣回溯 深度优先搜索dfs之78. 子集
    给你一个整数数组 nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。 示例1:输入:nums=[1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums=[0]输出:[[],[0]] classSol......
  • 八皇后问题
    题目描述在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方引入状态数组vis[8][8],vis[i][j]表示(i,j)被多少个皇后攻击之所以不用0,1来表示(i,j)是否被攻击,是因为回溯时,拿走一个皇后,也要将它攻击的位置清除,但如果把他攻击的位置变成0,那别的皇后对这个位置的......
  • hdu 2553 N皇后问题(DFS模板)
    Problem-2553(hdu.edu.cn)#include<iostream>#include<cstring>usingnamespacestd;intn,tot=0;intcol[12];boolcheck(intc,intr){for(inti=0;i<r;i++){if(col[i]==c||(abs(col[i]-c)==abs(i-r)))returnfalse;}r......
  • 数据类型及其拓展
    数据类型强类型语言要求变量的使用的严格符合规定,所有的变量都必须先定义后才能使用publicclassDemo02{publicstaticvoidmain(String[]args){Stringa="Hello";intnum=10;System.out.println(a);System.out.println(n......
  • C#(10):传值,输出,引用,数组,具名,可选参数,拓展方法
    传值参数:被调用后并不会更改变量值,改变的是方法中传去的变量值副本,仅影响方法中的参数值,不影响变量本身的值变量以及参数指向的是地址,方法调用后参数中重新指向新对象地址,将原来引用的变量对象地址丢弃,重新创建新对象地址  getHashcode方法,获取内存中的对象的has......
  • ClickHouse(22)ClickHouse集成HDFS表引擎详细解析
    HDFS这个引擎提供了与ApacheHadoop生态系统的集成,允许通过ClickHouse管理HDFS上的数据。这个引擎提供了Hadoop的特定功能。用法ENGINE=HDFS(URI,format)URI参数是HDFS中整个文件的URIformat参数指定一种可用的文件格式。执行SELECT查询时,格式必须支持输入,以及执行INSE......
  • HDU 1175 连连看 (DFS)
    HDU1175连连看(DFS)题目:给出连连看棋盘,然后有q次询问,每次询问4个数(x1,y1,x2,y2),输出是否能不绕外面且转折不超过两次消除,输出YES/NOSampleInput34123400004321411341124113321243401430241000021124132300Sampl......
  • POJ1129 信道分配(DFS )
    POJ1129信道分配(DFS)题目大意:每次有介于1-26个中继器,先输入一个数字n,表示中继器数量,然后一个冒号后面有与它相邻的中继器,每个中继器需要安排一个信道,不能与相邻的中继器相同,求最少的信道数量。样本输入2A:B:4A:BCB:ACDC:ABDD:BC4A:BCDB:ACDC:ABDD:ABC0示例输......
  • POJ2627 数独 (dfs or bfs)
    POJ2627数独(dfsorbfs)给出一个数独,空白用0表示,输出一个合理答案即可;SampleInput1103000509002109400000704000300502006060000050700803004000401000009205800804000107SampleOutput1436285795721394689867542313915427864689173527258639142374816956......
  • POJ1416 (dfs)
    POJ1416(dfs)公司现在要发明一种新的碎纸机,要求新的碎纸机能够把纸条上的数字切成最接近而不超过target值(可以选择不切割)。比如,target的值是50,而纸条上的数字是12346,应该把数字切成四部分,分别是1、2、34、6。因为这样所得到的和43(=1+2+34+6)是所有可能中最接近而不超......