思路
递归,每次从1到8(用0-7方便)选符合题意的数填进去,再递归填下一个
用 bool used[8] 存当前解的数字使用情况
用 int ans[8] 来存当前的解
用 int allans[92][8] 来存每一个解
用 int allnum 来存当前解的序号
递归函数
由于题设,dfs的参数只需要一个,即行号
dfs的内容:
1.出口:要包括存好当前解的功能
2.选数:要包括三个功能
(1)选数;(2)递归;(3)标记已使用以及复位
需要注意的是选数的时候
# 矛盾的条件不要写错
#尽量不要有冗余循环
代码:
void dfs(int i)
{
int j,k;
if(i==8)//找到解了
{
for(j=0;j<8;j++)
{
allans[allnum][j]=ans[j];//将解按照序号存好
//printf("%d",ans[j]);
}
//printf("\n");
allnum++;
return;
}
for(j=0;j<8;j++)//找解的过程,j表示列号
{
if