0
已解决
汪宇航
新手启示者
新手启示者
在国际象棋中,有这样一个棋,叫做皇后。皇后可以吃同一行,同一列,以及同一对角线上的任意棋子(包括主对角线和副对角线)。现在有一个8*8的棋盘,你要在棋盘上摆八个皇后,使得任意两个皇后之间都不能互相吃掉对方,请你列出前五项方案(按照字典序排列)以及方案总数?
输入描述 Input Description
无
输出描述 Output Description
输出6行,前5行每行8个数字,每个数字分别表示皇后从第一行到第八行所对应的列数,每个数字用空格隔开。第6行输出方案总数
样例输入 Sample Input
样例输出 Sample Output
提示:方案总数有92种
到底该输出多少?大佬求解。。。
0
已采纳
汪恺恒
中级启示者
中级启示者
当然,这题有简便方法,但最好还是写搜索
提示:
void dfs(int pos){
如果填完{
cnt++;
if(cnt<=5){
输出方案;
cout<<endl;
}
return ;
}
for(每个位置){
if(满足条件(可以填)){
vis[i]=true;
a[pos-i+7]=true;
b[pos+i]=true;
path[pos]=i;
搜索下一个位置;
vis[i]=false;
a[pos-i+7]=false;
b[pos+i]=false;
}
}
return ;
}
0