C语言 8皇后解法

网友投稿 577 2022-05-28

//这个问题的原理是,在一个四成四的表格中,顺序去放皇后,一个一个格子去试,每种情况都走一遍,结果就出来了

#include

#define MAX 200

#define Empty 0

#define Full 1

#define N 8

unsigned char qipan[N][N][N]={MAX};//初始化8张棋盘表示每下一步的

void input(int i);

int count = 0;

int main()

{

input(0);

getchar();

return0;

}

void input(int i)

{

intx=0,y=0;

intp=0,q=0;

int flag =0;

//初始化当前棋盘

if(i!=0)

{

for(x=0;x

{

for(y=0;y

{

qipan[i][x][y] = qipan[i-1][x][y];

}

}

}

else

{

for(x=0;x

{

for(y=0;y

{

qipan[i][x][y] = MAX;

}

}

}

//递归结束

if(i==N)

{

count++;

for(x=0;x

{

for(y=0;y

{

printf("%d ",qipan[i-1][x][y]);

}

printf("\n");

}

printf("%d\n",count);

return;

}

for(y=0;y

{

//找到空位

if(qipan[i][i][y]==MAX)

{

C语言 8皇后解法

//另其为1

qipan[i][i][y] = 1;

//前后左右上下都置为0

for(p=0;p

{

for(q=0;q

{

if(q==y||p==i||(p-i)==(q-y)||(p-i)==(y-q))

if(qipan[i][p][q] == MAX)

qipan[i][p][q] = 0;

}

}

if(flag != -1)

{

//找下一个

input(i+1);

}

//将棋盘变回本层原样

for(p=0;p

{

for(q=0;q

{

if(i!=0)

qipan[i][p][q] = qipan[i-1][p][q];

else

qipan[i][p][q] = MAX;

}

}

flag =0;

}

}

//找不到空位结束

return;

}

C 语言

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:媒资管理系统极限带宽公式详解
下一篇:基于硬件特性的性能调优
相关文章