#include <stdio.h>
#include <math.h>
#define MAX 8 //棋子數及棋盤大小MAXxMAX
int result[MAX],count=0;
int chess_cross(int n)//判斷是否可放置
{
int i;
for(i=0;i<n;i++)
{
if(result[i] == result[n] || n-i == abs(result[n] - result[i]))//斜率等於1
return 1;
}
return 0;
}
void show_result()//打印符合要求的組合
{
int i;
for(i=0;i<MAX;i++)
printf("(%d,%d)",i,result[i]);
printf("\n");
count++;
}
void put_chess(int n)//放置棋子到棋盤上
{
int i;
for(i=0;i<MAX;i++)
{
result[n] = i;
if(!chess_cross(n))//有沒有符合要求的
{
if(n == MAX -1)
show_result();
else
put_chess(n+1);
}
}
}
int main()
{
put_chess(0);
printf("壹***有%d種可能!\n",count);
}