首页 > 技术文章 > 【算法】全排列

jisuanjizhishizatan 2021-12-26 10:31 原文

#include<stdio.h>
int a[10],used[10];
int n=0;
void dfs(int nth){
	if(nth==n){
		for(int i=0;i<n-1;i++)printf("%d,",a[i]);
		printf("%d\n",a[n-1]);
		return;
	}
	for(int i=1;i<=n;i++){
		if(used[i]==0){
			used[i]=1;
			a[nth]=i;
			dfs(nth+1);
			used[i]=0;
		}
	}
}
int main(){
	scanf("%d",&n);
	dfs(0);
}

输入5,结果将会是:

D:\>dfs
3
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1

推荐阅读