1294 全排列
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述 Description
给出一个n, 请输出n的所有全排列
输入描述 Input Description
读入仅一个整数n (1<=n<=10)
输出描述 Output Description
一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
样例输入 Sample Input
3
样例输出 Sample Output
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
题解
#include <stdio.h>
#include <string.h>int n;
int book[11];
int s[11];void dfs(int num)
{int i;if(num==1){memset(book,0,11*sizeof(int));memset(s,0,11*sizeof(int));}if(num==n+1){for(i=1;i<=n;i++)printf("%d ",s[i]);printf("\n");return;}for(i=1;i<=n;i++){if(book[i])continue;book[i]=1;s[num]=i;dfs(num+1);book[i]=0;}return;
}int main()
{scanf("%d",&n);dfs(1);return 0;
}