n皇后 DFS

我是菜鸟,只会学习DFS算法,就是DFS算法我也学了好长时间。

 

#include<iostream>
#include <iomanip>
#define n 8
using namespace std;

int a[n+1],total=0,l;

int cheak(int i){
    int k;
    for(k=1;k<i;k++)
    if(abs(a[i]-a[k])==abs(i-k)||a[i]==a[k]) return 0;
    return 1;
    }

void dfs(int i){
     int j;
     if(i==n+1)
     {cout<<"第"<<setw(2)<<total+1<<"种:";for(j=1;j<=n;j++) cout<<a[j]<<" ";l++;if(l%3==0){cout<<endl;l=0;}total++;return ;}
     for(j=1;j<=n;j++)
     {
     a[i]=j;
     if(cheak(i))
     dfs(i+1);
                  }     
     }

int main()
{
    dfs(1);
    cout<<total;
    system("pause");
    return 0;
     
    }

 

该程序运行效果是:

posted on 2011-12-19 00:46  怡红公子  阅读(295)  评论(0编辑  收藏  举报