// n皇后.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <conio.h>
#define MAX 32
void ShowResult(int data[][32], int n)
{
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
printf("%2d", data[i][j]);
}
printf("/n");
}
printf("/n");
}
bool IsCurrentPosFeasible(int data[][32], int line, int row, int n)
{
bool bReturn;
for (int i = 0; i < n; ++i)
{
if ((1 == data[line][i]) || (1 == data[i][row]))
{
return false;
}
}
for (int i = 0; i < line; ++i)
{
for (int j = 0; j < n; ++j)
{
bReturn = ((i + j == line + row || i - j == line - row) && (1 == data[i][j]));
if (true == bReturn)
{
return false;
}
}
}
return true;
}
void NQueen(int data[][32], int line, int n)
{
if (line > n - 1)
{
ShowResult(data, n);
getch();
return ;
}
for (int i = 0; i < n; ++i)
{
if (IsCurrentPosFeasible(data, line, i, n))
{
data [line][i] = 1;
NQueen(data, line + 1, n);
data[line][i] = 0;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int data[MAX][MAX] = {0};
NQueen(data, 0, 25);
return 0;
}
n皇后
最新推荐文章于 2024-04-18 08:15:00 发布