dfs 实现全排列

来源:互联网 发布:监控软件慧眼下载 编辑:程序博客网 时间:2024/06/08 03:39

本题实现的是输入一个数实现从一到这个数的全排列,也是基础的dfs问题。c++可以直接调用一个函数实现感觉还是自己理解最好。

#include<bits/stdc++.h>using namespace std;int a[101],b[101],n;//a[101]数组里面保存的是序列,b[101]是标记数组 void prin(){    int i;    for(i=1;i<=n;i++)      printf("%5d",a[i]);      cout<<endl;}void dfs(int x){    int i;    for(i=1;i<=n;i++)      if(!b[i])      {        a[x]=i;//把i保存到第x个数           b[i]=1;//标记为已用过         if(x==n) prin();        else              dfs(x+1);              b[i]=0;//回溯       }}int main(){       cin>>n;       dfs(1);       return 0;}
原创粉丝点击