#include<bits/stdc++.h>
using namespace std;
int res[10]; //最后保存输出数的数组
int vis[10]; //标记位置的数组
int n;
void dfs(int step){
if(step==n+1) //判断边界
{
for(int i=1;i<=n;i++){
cout<<res[i];
}
printf("\n");
return;
}
for(int i=1;i<=n;i++){
if(vis[i]==0){ //如果这个数组未被标记 (假设res为箱子) res[i]可以放入数字
res[step]=i;
vis[i]=1;
dfs(step+1);
vis[i]=0; //恢复初始化
}
}
return;
}
int main(){
cin>>n;
dfs(1);
return 0;
}
dfs就是一条路一直走,走不下去回头一下再继续走(先根遍历)
bfs就是先从近的走,再走远的(层次遍历)
果然做这种程序题的时候才能感受到数据结构啊= =
上面的dfs算法程序经过一步一步的调试大致了解了,但还需要多做题来了解dfs和bfs