首页 > 代码库 > 4070 全排列
4070 全排列
题目来源:
http://bailian.openjudge.cn/practice/4070/
描述
对于数组[1, 2, 3],他们按照从小到大的全排列是
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
现在给你一个正整数n,n小于8,输出数组[1, 2, …,n]的从小到大的全排列。
输入
输入有多行,每行一个整数。当输入0时结束输入。
输出
对于每组输入,输出该组的全排列。每一行是一种可能的排列,共n个整数,每个整数用一个空格隔开,每行末尾没有空格。
样例输入
2
3
0
样例输出
1 2
2 1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
题意描述:
输入一个正整数n(小于8)
输出1到n的所有全排列方案
解题思路:
意即求n个位置放n个数的所有方案
程序代码:
1 #include<stdio.h>
2 int r[10],u[10];
3 void dfs(int n,int x);
4 int main()
5 {
6 int n,i;
7 while(scanf("%d",&n),n!=0)
8 {
9 dfs(n,1);
10 }
11 return 0;
12 }
13 void dfs(int n,int x)
14 {
15 int i;
16 if(n+1==x)
17 {
18 for(i=1;i<n;i++)
19 printf("%d ",r[i]);
20 printf("%d\n",r[n]);
21 return;
22 }
23 for(i=1;i<=n;i++)
24 {
25 if(!u[i])
26 {
27 r[x]=i;
28 u[i]=1;
29 dfs(n,x+1);
30
31 u[i]=0;
32 }
33 }
34 }
4070 全排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。