64,281
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int d[8][8];
int n;
void queen8(int L) {
int x,y;
if (8==L) {
n++;
printf("%d\n",n);
for (y=0;y<8;y++) {
for (x=0;x<8;x++) {
// printf("%d",d[y][x]);
if (d[y][x]) printf("■");
else printf("□");
}
printf("\n");
}
return;
}
for (x=0;x<8;x++) {
for (y=0;y<L;y++) {
if ( d[y][x ]
|| (x-(L-y)>=0 && d[y][x-(L-y)])
|| (x+(L-y)< 8 && d[y][x+(L-y)]))
break;
}
if (y>=L) {
d[L][x]=1;
queen8(L+1);
d[L][x]=0;
}
}
}
int main() {
int y,x;
for (y=0;y<8;y++) {
for (x=0;x<8;x++) {
d[y][x]=0;
}
}
queen8(0);
return 0;
}