問題は下のプログラムをすべての解を表示するようにする事です。
ただし、点対称・線対称の解は排除します。
では、よろしくお願いします。
#include <stdio.h>
#define N 8
void show(int board[])
{int i, j;
for(i = 0; i < N; i++) {
for (j = 0; j < N; j++) {putchar('+');putchar('-');putchar('-'); }
putchar('+');putchar('\n');

for (j = 0; j < N; j++) {putchar('|');
if (board[i] == j)
printf("★");
else
printf(" "); }
putchar('|');
putchar('\n'); }

for (j = 0; j < N; j++) {
putchar('+');putchar('-');putchar('-'); }putchar('+');putchar('\n');
exit(0);}
void solve(int board[], int n)
{ int i, j;

if (n == N) {
show(board);
}

for (i = 0; i < N; i++) {
for (j = 0; j < n; j++) {
if (board[j] == i)
goto cont;
if (board[j] - i == n - j)
goto cont;
if (i - board[j] == n - j)
goto cont;
}
board[n] = i;
solve(board, n + 1);

cont:; }}
int main(void)
{
int board[N];
int i;

for (i = 0; i < N; i++) {
board[i] = 0;
}

solve(board, 0);

exit(0);}