八皇后问题是C语言算法的一个经典例子;
它要求解的问题是,
以国际象棋为背景,有八个皇后(八个棋子),如何在 8*8 的棋盘中放置八个皇后,使得任意两个皇后都不在同一条横线、纵线或者斜线上。
根据资料,答案不止一个,共有92个;可以有92种摆法;
第一个答案应该是如下的,
下面用mfc画一个图形,来表达此问题;先理解问题,有时间再求解;
void CBhhView::OnDraw(CDC* pDC)
{
CBhhDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int w=50, h=50;
int startx=50, starty=50;
int len;
CPoint pt1, pt2;
len = w*8;
pt1.x = startx, pt1.y=starty;
pt2.x = startx + len;
pt2.y = starty;
pDC->MoveTo(pt1);
for(int i=0;i<9;i++)
{
pDC->LineTo(pt2);
pt1.y += h;
pDC->MoveTo(pt1);
pt2.y += h;
}
pt1.x = startx,