1 条题解
-
0陈海斌 (阳光少年chen) LV 9 @ 2023-8-25 17:08:55
#include <iostream> #include <cstring> #include <iomanip> using namespace std; const int maxn=1e6+10; int n; bool vis[maxn]; int ans[maxn]; void dfs(int dep){ //终止条件+输出 if(dep==n+1){ for(int i=1;i<dep;i++){ cout<<setw(5)<<ans[i]; } cout<<endl; } //枚举方案数 for(int i=1;i<=n;i++){ //标记防止重复搜索 if(!vis[i]){ vis[i]=1;//标记 ans[dep]=i;//搜索当前层 dfs(dep+1);//进入下一层 vis[i]=0;//回溯,还原相关状态 } } } int main(){ cin>>n; dfs(1); return 0; }
- 1
信息
- ID
- 2275
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 100
- 已通过
- 52
- 上传者