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 }

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

  • 相关阅读:
    EBS值集定义
    EBS MOAC 多OU使用配置
    EBS 根据报表名称查询对应职责
    EBS 根据Form名称查询对应职责
    Oracle EBS中弹性域推荐文档
    EBS FORM 中DELETE_RECORD的用法
    Java —— 对象
    Java——语句
    Java中类的继承
    Java 中声明和语句
  • 原文地址:https://www.cnblogs.com/zb121/p/12386699.html
Copyright © 2011-2022 走看看