代码实现:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char A[8]={' '};
int B[8]={0};
for (int i = 0; i < 8; i++)
{
scanf("%c", &A[i]);
}
for (int i = 0; i < 8; i++)
{
B[i] = A[i] - '0';
}
int y;
for (int i = 0; i < 8; i++)
{
if (B[i] < 0)
{
y = i;
}
}
int C[8][8] = { 0 };//八皇后
int row;//行
int clu;//列
for (int i = 0; i < 8; i++)
{
if (B[i] > 0)
{
C[B[i]-1][i] = 1;
}
if (B[i] < 0)
{
C[y-1][i] = 0;
}
}
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (C[i][j] == 1)
{
for (int k = 0; k < 8; k++)
{
for (int h = 0; h < 8; h++)
{
if (k == i || h == j)
{
C[k][h] = 2;
}
if (fabs(i - k) == fabs(j - h))
{
C[k][h] = 2;
}
}
}
}
}
}
int last=0;
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (C[i][j] == 0)
{
last = i;
printf("%d\n", last + 1);
}
else
{
last++;
}
}
}
if (last ==64)
{
printf("No Answer\n");
}
return 0;
}