poj 2698:八皇后问题

来源:互联网 发布:图片批量下载软件 编辑:程序博客网 时间:2024/05/01 04:22

解题思路:

DFS

#include<iostream>#include<cstring>using namespace std;//地图 struct map{int v[10][10];int t[10][10];};map m;int no = 1; void DFS(int i,int j,map c){c.v[i][j] = 1;//结果 if(i==8){cout<<"No. "<<no<<endl;for(int p=1;p<=8;p++){for(int q=1;q<=8;q++)cout<<c.v[q][p]<<" ";cout<<endl;}no++;return;}//列 for(int q=i;q<=8;q++)c.t[q][j] = 1;//斜线 int q = 1;while(i+q<=8 && j+q<=8){c.t[i+q][j+q] = 1;q++;}int p = 1;while(i+p<=8 && j-p>=1){c.t[i+p][j-p] = 1;p++;} //递归 for(int p=1;p<=8;p++)if(c.t[i+1][p] == 0){map a =c;DFS(i+1,p,a);}return;}int main(){memset(m.v,0,sizeof(m.v));memset(m.t,0,sizeof(m.t));for(int i=1;i<=8;i++){map r = m;DFS(1,i,r);}return 0;}


0 0
原创粉丝点击