zoukankan      html  css  js  c++  java
  • N皇后问题 HDU-2553

    按照行优先的方式遍历,因为一行只能放置一个元素,所以每一行不需要进行判断是否重复了。。。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 using namespace std;
     6 const int maxn=10086;
     7 int a[maxn];
     8 int cnt;
     9 int n;
    10 void dfs(int row,int &cnt){
    11     if(row==n){//递归终止条件
    12         cnt++;
    13         return;
    14     }
    15     for(int col=0;col<n;col++){//col表示的是列
    16         int ok=1;
    17         for(int j=0;j<row;j++){//row行之前,均需要判断是否符合规定
    18             if(a[j]==col||abs(col-a[j])==abs(row-j)){
    19                 ok=0;
    20                 break;
    21             }
    22         }
    23         if(ok){
    24             a[row]=col;//表示的是第col列可以放置在row行上面。
    25             dfs(row+1,cnt);//向下一行进行探索,这样就可以保证每一行只放一个元素,这样就不用行都进行判断。
    26         }
    27     }
    28 }
    29 int main(){
    30     //int n;
    31     int ans[11];
    32     for(n=1;n<=10;n++){
    33         cnt=0;
    34         dfs(0,cnt);//每一次都是从0行开始进行探索
    35         ans[n]=cnt;
    36     }
    37     for(int i=1;i<=10;i++){
    38         cout<<ans[i]<<" ";
    39     }
    40     cout<<endl;
    41 //    while(cin>>n){
    42 //        cnt=0;
    43 //        dfs(0,cnt);
    44 //        cout<<cnt<<endl;
    45 //    }
    46     
    47     return 0;
    48 }

    因为某些原因,最终结果需要打表。。。。

  • 相关阅读:
    [转载][mysql]mysql字符集干货
    [mysql]修改表段默认值
    微信支付之h5方式(非微信内置浏览器中支付)
    阿里云 ECS 安全组
    Memcached cas 陷阱
    Memcached 分布式集群
    nginx 配置多个主机
    static类型的变量
    全局变量和局部变量
    nginx 负载均衡(默认算法)
  • 原文地址:https://www.cnblogs.com/zb121/p/12386699.html
Copyright © 2011-2022 走看看