全排列 题解

标签: 深度优先搜索
4人阅读 评论(0) 收藏 举报
分类:

T1:无重复数字的全排列

【题目描述】

输入 n(<=11),按从小到大输出数字 1 到 n 个的全部排列。

【样例输入】

3

【样例输出】

1:1 2 3

2:1 3 2

3:2 1 3

4:2 3 1

5:3 1 2

6:3 2 1

====================================================

T2:无重复元素的全排列

【题目描述】

输入 n(<=11)个不同字符,按 ASCII 值从小到大输出 n 个字符的全部排列。

【样例输入】

abc

【样例输出】

1:a b c

2:a c b

3:b a c

4:b c a

5:c a b

6:c b a

===================================================

T3:有重复元素的全排列

【题目描述】

输入 n(<=10)个小些字母(可能重复),按从小到大输出输出 n 个字符的全部排列。

【样例输入】

abaab

【样例输出】

1:aaabb

2:aabab

3:aabba

4:abaab

5:ababa

==================题解================

用递归来取代多重循环。

bool vis数组记录是否取过此值,用一个变量来控制递归深度,开一个临时数组存储结果,每次更新这个数组,进函数时先判断深度,若深度==n,则输出数组中的值,return;之后进循环,先判断是否取过,若未取过则更新临时数组后递归到下一层。


查看评论

全排列题解

#include #include #include #include #include #include #include using namespace std; int prin...
  • ergedathouder
  • ergedathouder
  • 2016年07月15日 21:57
  • 154

全排列 (codevs 1294)题解

【题目描述】     给出一个n, 请输出n的所有全排列(按字典序输出)。 【样例输入】      3 【样例输出】      1 2 3     1 3 2     2 1 3   ...
  • PbTfcLx
  • PbTfcLx
  • 2016年01月10日 18:39
  • 415

CodeVS4064 全排列 题解

#include using namespace std; bool flag[10+2]; int N, M, ans[10+2]={0}; void Array(int n){ if...
  • AnHongjun
  • AnHongjun
  • 2017年06月29日 21:02
  • 96

CodeVS1294 全排列 题解

#include using namespace std; bool flag[10+2]; int N, ans[10+2]; void Array(int n){ if(n>=N){...
  • AnHongjun
  • AnHongjun
  • 2017年06月29日 21:01
  • 88

Openjudge 2.2 1750:全排列

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

全排列的一些总结

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

全排列-LintCode

描述: 给定一个数字列表,返回其所有可能的排列。  注意事项 你可以假设没有重复数字。 样例: 给出一个列表[1,2,3],其全排列为: [ [1,...
  • this_is_qiqi
  • this_is_qiqi
  • 2017年09月04日 22:45
  • 280

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

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

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

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

[练习] dfs输出全排列

代码: #include #include using namespace std; int visit[11],num[11]; int n; void dfs(int depth) { ...
  • sr19930829
  • sr19930829
  • 2014年03月17日 20:59
  • 2980
    个人资料
    等级:
    访问量: 0
    积分: 334
    排名: 0
    文章存档