分类：电脑/网络-程序设计-C/C++
问题：什么是“八皇后”问题以及关于“八皇后”问题的相关资料 
回答：“八皇后”问题是由德国家高斯提出的：在国际象棋的棋盘中放入八个皇后，这八个皇后互相之间不能相吃，也就是说八个皇后中的任意两个不在同一条横线、竖线、斜线上，问题是一共有多少种摆放方法。数学王子高斯在有生之年未能解决这个问题，也有很多数学家试图解决未果，直到计算机发明以后通过编程很容易就能算出一共有92种方法。下面给出解决的源代码:在一个8×8的棋盘上放置８个皇后，使得他们彼此不受攻击。按照国际象棋的规则，一个皇后可以攻击处在同一行或者同一列或者同一斜线上的其它任何棋子。#include <stdio.h>#include <stdlib.h>#include <math.h>int Judge(int *p, int j)　　　　　　　　　　　　//判断当前棋子位置是否符合规则，是则返回1，否则返回0；{　　int i;　　for(i=0;i<j;i++)　　{　　　 if(p[j]==p[i])　return 0;　　　 if(abs(p[j]-p[i])==j-i)　return 0;　　}　　return 1;}int main(){　　　int a[8];　//a[i]表示第i行的后所在位置（a[3]=0表示第3行的后在第0列）　　　int i=0,j=0,k=0;　　　for(a[0]=0;a[0]<8;j=0,a[j]++)　　　　 for(a[++j]=0;a[j]<8;j=1,a[j]++)　　　　　 if(Judge(a,j))　　　　　　 for(a[++j]=0;a[j]<8;j=2,a[j]++)　　　　　　　 if(Judge(a,j))　　　　　　　　 for(a[++j]=0;a[j]<8;j=3,a[j]++)　　　　　　　　　 if(Judge(a,j))　　　　　　　　　　 for(a[++j]=0;a[j]<8;j=4,a[j]++)　　　　　　　　　　　 if(Judge(a,j))　　　　　　　　　　　　 for(a[++j]=0;a[j]<8;j=5,a[j]++)　　　　　　　　　　　　　 if(Judge(a,j))　　　　　　　　　　　　　　 for(a[++j]=0;a[j]<8;j=6,a[j]++)　　　　　　　　　　　　　　　 if(Judge(a,j))　　　　　　　　　　　　　　　　 for(a[++j]=0;a[j]<8;a[j]++)　　　　　　　　　　　　　　　　　 if(Judge(a,j))　　　　　　　　　　　　　　　　　 {　for(i=0;i<8;i++) printf("%d",a[i]);　　　　　　　　　　　　　　　　　　　printf("%3s"," ");　　　　　　　　　　　　　　　　　　　if(!(++k%7)) printf("\n");　　　　　　　　　　　　　　　　　 }　　　printf("\n\n%d\n\n",k);　　　printf("\n请按任意键结束...");　　　getch();　　　return 0;}