精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>算法集锦--------梦入玄机>>八皇后问题算法>>我的八皇后源程序~~

主题:我的八皇后源程序~~
发信人: agx(~DANCESwithWOLVES~)
整理人: yangcs(2002-01-14 18:36:29), 站内信件
#define N 8  /* 棋盘大小*/

void main()
{
 int ab[N+1],a[N+1],b[2*N],c[2*N];
 int good,t,i;
 unsigned long n=0;
 for(i=0;i<=N;i++) {ab[i]=0;a[i]=0;}
for(i=0;i<2*N;i++) {b[i]=0;c[i]=0;}
good=1;t=1;ab[t]=1;a[ab[t]]=1;b[N-t+ab[t]]=1;c[t+ab[t]]=1;
puts("");
while(t) { /* */
if(good)
if(t==N) { /* */
for(i=1;i<=N;i++) printf("%d %d,",i,ab[i]);
printf("\n");
n++;
a[ab[t]]=0;b[N-t+ab[t]]=0;c[t+ab[t]]=0;ab[t--]=0;
while(ab[t]==N) { /* */
a[ab[t]]=0;b[N-t+ab[t]]=0;c[t+ab[t]]=0;ab[t--]=0;
}
if(t!=0) { /* */
a[ab[t]]=0;b[N-t+ab[t]]=0;c[t+ab[t]]=0;
ab[t]++;
}
}
else ab[++t]++;
else { /* */
if(ab[t]==N) { /* */
ab[t--]=0;
a[ab[t]]=0;b[N-t+ab[t]]=0;c[t+ab[t]]=0;
}
while(ab[t]==N) { /* */
a[ab[t]]=0;b[N-t+ab[t]]=0;c[t+ab[t]]=0;ab[t--]=0;
a[ab[t]]=0;b[N-t+ab[t]]=0;c[t+ab[t]]=0;
}
if(t!=0) ab[t]++;
2 }
if(a[ab[t]]||b[N-t+ab[t]]||c[t+ab[t]]) good=0;
else { /* */
good=1;
a[ab[t]]=1; b[N-t+ab[t]]=1; c[t+ab[t]]=1;
}
}
printf("\n%ld",n);
}


----
如果您对您的智商有充分的自信的话 ,欢迎来脑力震荡版 ;)
脑力震荡, 让您脑震荡

休闲时尚 -> [脑力震荡

[关闭][返回]