用数据结构的栈解决八皇后问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:25:45
在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

代码如下:

#include<stdio.h>
int v,i,j,k,l,s,a[99];
main()
{
for(scanf("%d",&s);*a-s;v=a[j*=v]-a[i],k=i<s,j+=(v=j<s&&(!k&&!!printf(2+"\n\n%c"-(!l<<!j)," #Q"[l^v?(l^j)&1:2])&&++l||a[i]<s&&v&&v-i+j&&v+i-j&&v+i-j))&&!(l%=s),v||(i==j?a[i+=k]=0:++a[i])>=s*k&&++a[--i]);
}

我保证这段代码能运行。但可能有时会编译出错,关闭编译器重新编译就行了。

运行时输入 8(即皇后数量) 按回车。

你如果想知道这代码是怎么编的,请你请教高人吧。

这段代码是1991年国际模糊C代码大赛的“最佳小程序”