DFS 的实现思路为递归,大概模板如下:
进入函数;
if条件判断(u==n)--若为真则说明已达最深,打印结果;
for循环,定义i在1-n之间(字典序排列)
{ if判断i是否被使用过--如果否,进行下一步,反之跳过;
记录路径;
记录i“被使用过”
递归dfs(u+1);
恢复(让i恢复到未被使用过的状态);}
以上。
从上面可以看出,我们至少需要两个数组--一个用来记录路径,另一个用来判断i是否被使用过。
另外这其实就是一个树状图
acwing842 -排列数字
这个是最基础的模板,其他DFS的问题都是建立在这个的基础上扩展的
红皇后问题,acwing843
问题分析:如果要使用DFS,那么我们得把问题转化为树状图的形式。
算了懒得写了,红皇后下次再发