练习赛11.全排列

原创 2013年12月05日 21:00:38

全排列

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 12   Accepted Submission(s) : 6

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

用深度优先搜索输出1到n(1<=n<=8)所有不重复的排列,即n的全排列。

Input

输入有多组数据,每组数据就一行为n。

Output

对于每组数据n输出其全排列,每组输出中间用一空行隔开。

Sample Input

3

Sample Output

123
132
213
231
312
321

Author

代码:
  1. #include <iostream>  
  2. #include <stdio.h>  
  3. #include <string.h>  
  4. using namespace std;  
  5. int visit[15],ans[15],t;  
  6. void dfs(int x)  
  7. {  
  8.     int i,j;  
  9.     for(i=1; i<=t; i++)  
  10.     {  
  11.         if(visit[i]==0)//判断当前点如果木有被访问过则深入  
  12.         {  
  13.             visit[i]=1;  
  14.             ans[x]=i; //将当前的这个数保存起来  
  15.             if(x<t)   //如果全部完成 则不递归 进行输出  
  16.                 dfs(x+1);//递归下一层  
  17.             else  
  18.             {  
  19.                 for(j=1; j<=t; j++)  
  20.                     cout<<ans[j];  
  21.                 cout<<endl;  
  22.             }  
  23.             visit[i]=0;  
  24.         }  
  25.     }  
  26.   
  27. }  
  28. int main ()  
  29. {  
  30.     int flag=0;  
  31.     while(scanf("%d",&t)!=EOF)  
  32.     {  
  33.         memset(visit,0,sizeof(visit));  
  34.         if(flag==0)  //特别奇葩的格式 每组输出中间用一空行隔开 第一组不用  
  35.             flag++;  
  36.         else  
  37.             cout<<endl;  
  38.             dfs(1);  
  39.     }  
  40.     return 0;  
  41. }  


练习赛11.删数问题

删数问题 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submiss...
  • u012761443
  • u012761443
  • 2013年12月05日 20:29
  • 488

【牛客练习赛11】A B D E

A 假的线段树 链接:https://www.nowcoder.com/acm/contest/59/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32...
  • qq_37383726
  • qq_37383726
  • 2018年01月27日 17:05
  • 82

全排列计算(康托展开)

题目描述 给出一个1~n的全排列中的某一个,求它是按字典序排列的第几个。 输入输出格式 输入格式: 第一行,一个n; 第二行,依次是n个数。 输出格式: ...
  • update7
  • update7
  • 2017年02月23日 21:38
  • 15737

全排列的一些总结

今天做了一道网易的笔试题——数列还原。里面用到了全排列的想法,因此学习并总结了一下全排列算法。 1、全排列问题描述        输入一个字符串或者序列,打印出该字符串或序列中字符或元素的所有排列。例...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016年08月09日 17:32
  • 3443

全排列和去重全排列---递归实现

一、全排列的概念: 根据360百科,我们知道从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。二、全排列的...
  • fern_girl
  • fern_girl
  • 2017年04月21日 22:13
  • 749

Openjudge 2.2 1750:全排列

.
  • C20192419MYS
  • C20192419MYS
  • 2017年04月19日 13:22
  • 548

全排列 DFS实现

/* DFS实现全排列 递归是我的弱项 分析递归过程分析的头都大了。。。 做一下注释 免得日后想不起来 运行时注意: 输入数字最好不要超过两位数 输入10时运行时间近1min 产生的output.t...
  • Jack_Wong2010
  • Jack_Wong2010
  • 2011年08月22日 13:17
  • 3874

输出全排列(递归&非递归)

递归算法: 假设总共有n个元素,其核心是:将每个元素放到余下n-1个元素组成的队列最前方,然后对剩余元素进行全排列,依次递归下去。 比如:1 2 3 首先将1放到最前方(跟第1个元素交换),然后...
  • prstaxy
  • prstaxy
  • 2012年11月04日 22:59
  • 7695

20170207 机房『练习赛』

T1 lis T2 isolate T3 domino T4 coin
  • Doggu
  • Doggu
  • 2017年02月08日 12:06
  • 131

全排列(递归和字典序)

递归法: #include #define maxn 100 int d[maxn]; void swap(int *a, int *b) //交换 { int t; t = *a; *a...
  • simatongming
  • simatongming
  • 2015年12月16日 04:03
  • 1706
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:练习赛11.全排列
举报原因:
原因补充:

(最多只允许输入30个字)