`
Dev|il
  • 浏览: 121815 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

求一个集合的全排列

 
阅读更多
#include <iostream>
using namespace std;

const int _N = 10000;

int d[_N], p[_N];
bool flag[_N];

int n;
void dfs(int pos)
{
	int i;
	if(pos == n)
	{
		for(i = 0; i < n; i++)
			cout<<d[i]<<" ";
		cout<<endl;
		return;
	}
	for(i = 0; i < n; i++)
	{
		if(!flag[i])
		{
			flag[i] = true;
			d[pos] = p[i];
			dfs(pos + 1);
			flag[i] = false;
		}
	}
}
int main()
{
	int i;
	cin>>n;
	memset(flag, false, sizeof(flag));
	for(i = 0; i < n; i++)
		p[i] = i + 1;
	dfs(0);
	return 0;
}

输入3
输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
分享到:
评论

相关推荐

    基于集合的子集与集合的全排列的相关问题

    本篇文章介绍了,集合的子集与集合的全排列的相关系列问题说明,需要的朋友参考下

    全排列——递归排序和字典序列

    从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。 (2)字典序排列 把升序的排列(当然,也可以实现为降序)作为当前排列开始,然后依次...

    重复元素全排列

    计算重复元素的全排列。以文本文件的形式存储和输入输出。

    全排列算法 perm

    集X中元素的全排列记为Perm(X),(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列.R的全排列可归纳定义如下: 当n=1时,Perm(R)={r},r是集合R中唯一的元素. 当n&gt;1时,Perm(R)由(r1)Perm(R1),(r2)...

    Rogerspy#LeetCode-Py-1#剑指 Offer II 083. 没有重复元素集合的全排列1

    剑指 Offer II 083. 没有重复元素集合的全排列标签:数组、回溯难度:中等题目大意给定一个不含重复数字的数组 nums 。若未被访问过则将其加入排列中

    tesla-peer#LeetCode-Python-#剑指 Offer II 083. 没有重复元素集合的全排列1

    剑指 Offer II 083. 没有重复元素集合的全排列标签:数组、回溯难度:中等题目大意给定一个不含重复数字的数组 nums 。若未被访问过则将其加入排列中

    finesure2017#LeetCode-Py-1#剑指 Offer II 084. 含有重复元素集合的全排列 1

    剑指 Offer II 084. 含有重复元素集合的全排列标签:数组、回溯难度:中等题目大意给定一个可包含重复数字的序列 nums 。解题思路这道题跟「剑指 O

    Matlab实现全排列.doc

    集合R中元素的全排列记为perm(R),(ri)perm(R)表示在全排列perm(R)的每一个排列前加上前缀ri得到的排列。R的全排列可归纳递归定义如下:当n==1时,perm(R)=(r),其中r是集合R中唯一的元素;当n&gt;1时,perm(R)由...

    C#算法之全排列递归算法实例讲解

    排列:从n个元素中任取m个元素,并...(1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀); (2)出口:如果只有一个元素的全排列,则说明已经排完,则输出数组; (3)不断将每个元素放作第一个元素,然

    全排列算法

    设R={r1,r2,…,rn}是要进行排列的n个元素,R的全排列记为perm(R),Ri=R-{ri},(ri)perm(Ri)表示集合Ri的全排列中每个排列前增加一个前缀所形成的所有排列。于是 当n=1时,perm(R)=(r),其中r是R中的唯一元素; 当n...

    使用C语言解决字符串全排列问题

    问题 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b...对于只有一个元素的集合,可以直接生成全排列。所以全排列的递归终止条件很明确,只有一个元素时。我们可以分析一下全排

    深入全排列算法及其实现方法

    全排列在很多程序都有应用,是一个很常见的算法,常规的算法是一种递归的算法,这种算法的得到基于以下的分析思路。 给定一个具有n个元素的集合(n&gt;=1),要求输出这个集合中元素的所有可能的排列。一、递归实现...

    python递归全排列实现方法

    取出数组中第一个元素放到最后,即a[1]与a[n]交换,然后递归求a[n-1]的全排列 1)如果数组只有一个元素n=1,a={1} 则全排列就是{1} 2)如果数组有两个元素n=2,a={1,2} 则全排列是: {2,1}–a[1]与a[2

    全排序问题分析及程序

    递归(分治法思想): ...设(ri)perm(X)表示每一个全排列前加上前缀 ri得到的排列. 当n=1时,perm(R)=(r) 其中r是唯一的元素,这个就是出口条件. 当n&gt;1时,perm(R)由 (r1)perm(R1),(r2)perm(R2),...(rn)perm(Rn)构成.

    数据库求属性集闭包&函数依赖闭包

    声明:以下仅个人观点,若有错误,敬请指正O(∩_∩)O~ ...求R的所有子集(要用到第二步中的全排列~~~),设其中一个为Ri;对每一个子集求其闭包,记为Ri+;然后求Ri+的所有子集记为(Ri+)j;最后做映射Rià(Ri+)j。

    数据结构和算法必知必会的50个代码实现

    ## 链表* 实现单链表、循环链表、双向链表,支持增删操作* 实现单链表反转* 实现两个有序的链表合并为一个有序链表* 实现求链表的中间结点 ## 栈* 用数组实现一个顺序栈* 用链表实现一个链式栈* 编程模拟实现一个...

    wangtechservices#Interview_apachecn#子集合问题1

    子集合问题子集合是全排列的好朋友,也是combination组合的好朋友,排列·组合·子集,他们三个都是好朋友.从空开始加同样先来看'ABC'市面流行思路市面上

    有重复元素的排列问题

    试着设计一个算法,列出R的所有不同排列。 即,给定n以及待排的n个可能重复的元素。计算输出n个元素的所有不同排列。 输入格式 第1行是元素个数n,1。接下来的1行是待排列的n个元素,元素中间不要加空格。 ...

    stronglxp#learnNote#46.全排列1

    对于集合[1, 2, 3],如果让我们在纸上写的话,很容易可以写出来[1, 2, 3],[1, 3, 2],[2, 1, 3],[2, 3, 1],[3, 1,

    matlab算法集合打包

    matlab算法集合打包,包括:数据拟合,数学规划,递推关系式的作图程序,最小生成树Prim算法,顶点覆盖近似算法,哈密尔顿回路,画等温线,离散优化,模拟退火应用,生成全排列矩阵,时间序列分析程序,中国大学生...

Global site tag (gtag.js) - Google Analytics