#include<stdio.h> int queen[8],b[8],c[15],d[15]; int sum=0; void display() { int k; printf("%d:",sum++); for(k=0;k<8;k++) printf(" %d",queen[k]); printf("/n"); } void ptry(int i) { int j; /*每个皇后都有8个可能位置*/ for(j=0;j<8;j++) { if(b[j]==0&&c[i+j]==0&&d[i-j+7]==0)/*判断位置是否冲突*/ { queen[i]=j; /*摆放皇后*/ b[j]=1; /*宣布占领第j行*/ c[i+j]=1; /*占领两个对角线*/ d[i-j+7]=1; if(i<7) __________________多了个';' /*8个皇后没有摆完,递归摆放下一个皇后*/ ptry(i+1); else display(); /*完成任务,打印结果*/ b[j]=0; /*回溯*/ c[i+j]=0; d[i-j+7]=0; } } } void main() { int k; for(k=0;k<8;k++) { b[k]=0; c[k]=0; d[k]=0; } ptry(0); getch(); } 作为一种学习吧