码迷,mamicode.com
首页 > 其他好文 > 详细

4070 全排列

时间:2017-05-31 18:52:31      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:nbsp   size   ++   clu   scanf   cti   程序   多行   i++   

题目来源:
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 全排列

标签:nbsp   size   ++   clu   scanf   cti   程序   多行   i++   

原文地址:http://www.cnblogs.com/wenzhixin/p/6925302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!