读书人

8皇后 DFS

发布时间: 2012-11-01 11:11:32 作者: rapoo

八皇后 DFS

【转】http://blog.csdn.net/zxy_snow/article/details/5949706

?

//八皇后#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;const int n = 8;int map[10][10],visit[10][10];int num,Q;int find(int x,int y){    int sum = 0;    for(int i=1; i<=n; i++)  //判断对应的列是否已有皇后    {        sum += visit[i][y];    }    int b = y;    int a = x;    for(int i=1; i<=n; i++)        for(int k=1; k<=n; k++)        {if( abs( i-x ) == abs( k-y ))sum += visit[i][k];}    return sum == 0 ? 1 : 0 ;}void DFS(int d){    if( Q == 8 )    {        num++;        return;    }    for(int i=1; i<=n; i++)    {        if( !visit[d][i] && find(d,i) )        {            visit[d][i] = 1;            Q++;            DFS( d+1 );            visit[d][i] = 0;            Q--;        }    }    }int main(){    num = 0; Q = 0;    memset(map,0,sizeof(map));    memset(visit,0,sizeof(visit));    DFS(1);    cout << num << endl;    system("pause");    return 0;}

?

读书人网 >编程

热点推荐