#include <stdio.h>
#define ROW 8
#define COL 8
#define NUM 8
int a[ROW][COL];
int k = 0;
int put( int n)
{
int i, j;
if( n > NUM)
{
printf( "----------%06d----------\n", ++k);
for( i = 0; i < ROW; i ++)
{
for( j = 0; j < COL; j ++)
printf( "%c ", a[i][j] == 1 ? 'o' : 'x');
printf( "\n");
}
printf( "--------------------------\n\n");
return -1;
}
// 尝试行中的每个位置
for( j = 0; j < COL; j ++)
{
int flag = 0;
for( i = 0; i < n - 1; i ++)
{
// 是否同列
if( a[i][j] == 1)
{
flag = 1;
break;
}
// 是否左斜角
if( j - ( n - 1 - i) >= 0 && a[i][j - ( n - 1 - i)] == 1)
{
flag = 1;
break;
}
// 是否右斜角
if( j + ( n - 1 - i) < COL && a[i][j + ( n - 1 - i)] == 1)
{
flag = 1;
break;
}
}
if( flag == 0)
{
a[n-1][j] = 1;
if( put( n + 1) == -1)
{
a[n-1][j] = 0;
}else
return 0;
}
}
return -1;
}
int main()
{
put( 1);
return 0;
}
八皇后
最新推荐文章于 2023-07-07 14:04:01 发布