算法进阶指南(递归)--- 递归实现排列型枚举

题目链接:递归实现排列型枚举

普通版:

#include<iostream>

using namespace std;

int n;

int order[10];
int chosen[10];

void dfs(int x) {
	//大于n时候终止 
	if(x == n+1) {
		//输出这n个数 
		for(int i=1; i<=n; i++) {
			cout<<order[i]<<" ";
		}
		puts("");
		return ;
	}
	
	for(int i = 1; i <= n; i++) {
		if(chosen[i]) continue;
		//标记当前i,表示用过了 
		chosen[i]=1;
		//把i存入x这个坑里面 
		order[x]=i;
		dfs(x+1);
		//把i弹出,表示可以再次用 
		chosen[i]=0;
	}
}
int main() {
	cin >> n;
	dfs(1);
	return 0;
}
原文地址:https://www.cnblogs.com/bingers/p/13192312.html