#include<stdio.h>
#include<math.h>
#define MAX 8 //8*8的棋盘
int board[MAX];
void show_result()
{
int i;
for(i=0;i<MAX;i++)
printf("(%d,%d)",i,board[i]);
printf("/n");
}
//检查是否在同一直线上
int check_cross(int n)
{
int i;
for(i=0;i<n;i++)
{
if(board[i]==board[n] ||(n-1)==abs(board[i]-board[n]))
return 1;
}
return 0;
}
//放棋子到棋盘
void put_chess(int n)
{
int i;
for(i=0;i<MAX;i++)
{
board[n] = i;
if(!check_cross(n))//如果不在一条直线上
{
if(n==MAX-1)//当放好7行后可以确定
show_result();
else
put_chess(n+1);//递归回溯放下一行
}
}
}
void main()
{
//clrscr();
puts("the possible placement are:/n");
put_chess(0);
puts("/npress any key to quit");
getch();
return;
}