现在的位置: 首页 > 综合 > 正文

八皇后问题

2018年05月10日 ⁄ 综合 ⁄ 共 673字 ⁄ 字号 评论关闭
#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;
}
【上篇】
【下篇】

抱歉!评论已关闭.