首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

8皇后 DFS

2012-11-01 
八皇后 DFS【转】http://blog.csdn.net/zxy_snow/article/details/5949706?//八皇后#include stdio.h#incl

八皇后 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;}

?

热点排行