[DFS]排列的生成

排列的生成

Time Limit:1000MS Memory Limit:65536K
Total Submit:150 Accepted:95

Description

输出P(n,m)的排列(n,m<=10)

Input

n,m;

Output

P(n,m)的排列

Sample Input

3 2

Sample Output

1 2
1 3
2 1
2 3
3 1
3 2

题目解析
先读入n,m;再爆搜

AC完整程序

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

}
原文地址:https://www.cnblogs.com/luojunhang/p/12300181.html