#include using namespace std; const int N=10; bool st[N];//判断当前数字是否被使用过 int path[N];//存放当前方案 int n; void dfs(int u) { if(u==n) { for(int i=0;i<n;i++) cout<<path[i]<<' '; // 输出排列 cout<<endl; return; } for(int i=1;i<=n;i++)//枚举每个数字 { if(!st[i])//如果这个数字没有被使用过 { path[u]=i;//选择这个数字 st[i]=true;//将这个数字标记为使用过 dfs(u+1);//继续搜索下一个数字 st[i]=false;//回溯,将这个数字的使用状态恢复 } } } int main() { cin>>n; dfs(0);//从第0个位置开始搜索 return 0; }

C++ 深搜实现自然数 1~n 全排列(无重复数字)

原文地址: https://www.cveoy.top/t/topic/nR9E 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录