poj 2754:八皇后

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

解题思路:

DFS

#include<iostream>#include<cstring>using namespace std;//地图 struct map{int v[10][10];int t[10][10];};map m;int no = 1; int pos[100][10];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++)if(c.v[p][q]==1){pos[no][p] = q;break;}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);}int s,n;cin>>s;while(s--){cin>>n;for(int i=1;i<=8;i++)cout<<pos[n][i];cout<<endl;}return 0;}


0 0
原创粉丝点击