zoukankan      html  css  js  c++  java
  • DFS,DP————N皇后问题

    C++代码

    #include <iostream>
    using namespace std;
    const int N=20;
    int n;
    char g[N][N];
    bool col[N],dg[N],udg[N];
    void dfs(int u){
        if (u==n){
            for(int i=0;i<n;i++)puts(g[i]);
            puts("");
            return;
        }
        for (int i=0;i<n;i++)
            if (!col[i]&&!dg[u+i]&&!udg[n-u+i]){
                g[u][i]='Q';
                col[i]=dg[u+i]=udg[n-u+i]=true;
                dfs(u+1);
                col[i]=dg[u+i]=udg[n-u+i]=false;
                g[u][i]='.';
            }
    }
    int main(){
        cin>>n;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                g[i][j]='.';
        dfs(0);
        return 0;
    } 
    //↑制图
    //↓方法数
    #include<bits/stdc++.h>
    using namespace std;
    int n,total=0,flag[4][50];
    void dfs(int i){
    	if(i==n+1){total++;return;}
        for(int j=1;j<=n;++j){
            if(flag[1][j]&&flag[2][i+j]&&flag[3][i-j+n]){ 
                flag[1][j]=false;flag[2][i+j]=false;flag[3][i-j+n]=false;   
                dfs(i+1); 
                flag[1][j]=true;flag[2][i+j]=true;flag[3][i-j+n]=true;
            }
        }
    }
    
    
    int main(){
    	for(int i=1;i<=3;i++)
    	for(int j=1;j<=50;j++)
    	flag[i][j]=true; 
    	cin>>n;
    	dfs(1);
    	cout<<total;
    	return 0;
    }
    

      

  • 相关阅读:
    Omi框架学习之旅
    Omi框架学习之旅
    Omi框架学习之旅
    加密解密
    RSA加密解密
    CMDB后台管理(AutoServer)
    CMDB Autoclient思路分析
    CMDB开发(需求分析)
    Django之model操作(续)
    Django之Model操作
  • 原文地址:https://www.cnblogs.com/myhnb/p/11305774.html
Copyright © 2011-2022 走看看