代码:
#include <iostream>
using namespace std;
//八皇后
void eightQueue(int* colunmnIndex, int k ,int length)
{
if (k == length)
{
for (int i = 0 ; i < length; i++)
{
for (int j = i + 1; j < length; j++)
{
if ((i - j == colunmnIndex[i] - colunmnIndex[j]) || (j - i == colunmnIndex[i] - colunmnIndex[j]))
return;
}
}
for (int i = 0; i < length; i++)
cout << colunmnIndex[i];
cout << " ";
}
else
{
for (int m = k; m < length; m++)
{
int temp = colunmnIndex[m];
colunmnIndex[m] = colunmnIndex[k];
colunmnIndex[k] = temp;
eightQueue(colunmnIndex, k+1, length);
temp = colunmnIndex[m];
colunmnIndex[m] = colunmnIndex[k];
colunmnIndex[k] = temp;
}
}
}
void eightQueue(int* colunmnIndex, int length)
{
if (colunmnIndex == nullptr)
return;
int i = 0;
eightQueue(colunmnIndex, i, length);
}
int main()
{
int colunmnIndex[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
int length = sizeof(colunmnIndex) / sizeof(colunmnIndex[0]);
eightQueue(colunmnIndex, length);
cout << endl;
system("pause");
return 0;
}
测试: