当前位置: 代码迷 >> 综合 >> DFS练习-codevs-1294全排列
  详细解决方案

DFS练习-codevs-1294全排列

热度:61   发布时间:2023-12-20 21:29:59.0

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;
}