您的位置:首页 > 其它

八皇后问题

2014-05-08 10:51 344 查看
#include
#include
#include
#define N 8

int left[2*N+1];
int right[2*N+1];
int column[N+1];
int a[N+1];
int times=0;

void show(){
times++;
printf("第%d个\n",times);
int i,j;
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
if(a[i]==j)
printf("1 ");
else
printf(".");
}
printf("\n");
}
printf("\n");
}

void search(int row){
if(row>N)
show();
else{
int col;
for(col=1;col<=N;col++){
//printf("column[%d]:%d\n",col,column[col]);
if(column[col]==0&&left[N+row-col]==0&&right[col+row]==0){
column[col]=1;
left[N+row-col]=1;
right[row+col]=1;
a[row]=col;
search(row+1);
column[col]=0;
left[N+row-col]=0;
right[row+col]=0;
}
}
}
}

int main(){

memset(left,0,2*N+1);
memset(right,0,2*N+1);
memset(column,0,N+1);
memset(a,-1,N+1);
search(1);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: