八皇后问题(dfs)
八皇后问题:八行八列国际象棋棋盘中,每一行每一列每一条斜线上只能放置一个皇后,不能冲突,能有多少种放置方式
算法:深搜 dfs(depth-first search)dfs的思想就是从初始状态出发,下一步可能有多种状态,选其中一个状态深入,到达新的状态;直到无法继续深入,退回到前一步,转移到其他状态,然后再深入下去。
dfs:可以遍历每一种情况,直到找到解法;空间要求小;时间要求高;为了降低时间复杂度,进行剪枝;一定要回溯,收拾现场,不然影响下一条路走;精华就是回溯和剪枝;dfs其实就是递归
具体看代码实现(下面代码为n皇后问题的解决,两种dfs方法)
#include <bits/stdc++.h>
using namespace std;
const int N = 50;
int n;
char g[N][N]; //记录图 graph
int row[N],col[N],dg[N],udg[N];
int cnt;
int s;
void dfs1(int u) //每一行为递归的一层
{
if (u==n) //递归要提前设置好出口
{
cout<<"case"<<++cnt<<":"<<endl;
for (int i=

最低0.47元/天 解锁文章
1309

被折叠的 条评论
为什么被折叠?



