[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("\n");
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;
}
}
}