luogu【P1706】全排列问题

来源:互联网 发布:淘宝文艺女装店 编辑:程序博客网 时间:2024/05/17 03:41

思路:最近发现自己对dfs的理解不够深透于是写了一个最基础的dfs然后分析了一下QwQ

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;int a[10001];int n;int v[10001];int dfs (int m)//一定要注意这个参数代表的是递归的层数 {if (m-1==n)//当递归层数足够且产生满足条件的解时输出 {for (int i=1;i<=n;i++)  cout<<"      "<<a[i];cout<<endl;return 0;}for (int i=1;i<=n;i++)//枚举每个层数的可行节点 {if (v[i]==0)//如果尚未访问则加入可行解 {a[m]=i;v[i]=1;dfs(m+1);v[i]=0;//回溯的过程 一层递归后将选过的节点重新加入 }}}int main (){cin>>n;dfs(1);return 0;}


0 0