// 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("-", 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; }