#include
#include
#include
#define N 8
int column[N];//存放每行放置的列数
int cnt = 0;//放置方案总数
int canplace(int r)
{
int i;
for(i = 0; i < r; i++)
{
if(column[r] == column[i] || abs(column[r] - column[i]) == r - i)
return 0;
}
return 1;
}
void dfs(int row)
{
int i, j;
for(i = 0; i < N; i++)
{
column[row] = i;
if(canplace(row))
{
if(row == N - 1)
{
for(j = 0; j < N; j++)
{
printf("%d ", column[j] + 1);
if(j == N - 1)
printf("\n");
}
cnt++;
}
else
dfs(row + 1);
}
}
}
int main(void)
{
dfs(0);
printf("放置方案总共有%d种\n", cnt);
system("pause");
}
N皇后问题
最新推荐文章于 2022-12-01 10:22:27 发布