1 条题解
-
0
题目分析
本题实际上就是枚举排列问题。
使用深搜,用 数组记录是否已经访问,用 数组记录排列内容,当递归层数 时将 数组输出即可。
参考代码(C++)
#include<bits/stdc++.h> using namespace std; int n,k; bool vis[20]; int g[20]; void dfs(int d,int x){ g[d] = x; vis[x] = 1; if(d == k){ for(int i = 1;i<=k;i++)cout<<g[i]<<" "; cout<<endl; vis[g[k]] = 0; return; } for(int j = 1;j<=n;j++){ if(!vis[j]) dfs(d+1,j); } vis[x] = false; return; } int main(){ cin>>n>>k; for(int i = 1;i<=n;i++){ dfs(1,i); memset(vis,0,sizeof(vis)); } return 0; }
- 1
信息
- ID
- 111
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者