AcWing 94. 递归实现排列型枚
原题链接
简单
作者:
xwx_9
,
2024-03-29 17:22:26
,
所有人可见
,
阅读 1
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=10;
int n;
int arr[N];
int use[N];//记录数据状态是否可以使用 true=不能使用 false=可以使用
void DFS(int u){
if(u>n){//边界
//for打印方案
for(int i=1;i<=n;i++){
printf("%d ",arr[i]);
}
puts("");
return;
}
//依次枚举每条分支 =当前位置可以放哪些数
for(int i=1;i<=n;i++){
if(!use[i]){
arr[u]=i;
use[i]=true;
DFS(u+1);
//回溯节点
arr[u]=0;
use[i]=false;
}
}
}
int main(){
scanf("%d",&n);
DFS(1);
return 0;
}