`
Dev|il
  • 浏览: 125232 次
  • 性别: 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
分享到:
评论

相关推荐

    java递归实现N个数全排列输出

    当给定一个包含N个不同元素的集合时,全排列就是要列出所有可能的N!(N的阶乘)种排列方式。在这个场景中,我们将探讨如何使用Java语言,通过回溯法来递归实现全排列的输出。 首先,我们需要理解回溯法的基本概念。...

    用回溯法求序列的全排列

    3. 对于每一个未处理的元素,将其放置在当前位置,然后递归处理下一个位置,同时将这个元素从未处理集合中移除,表示已经尝试了这个排列的可能性。 4. 递归返回后,由于前一步的元素放置可能不正确,需要回溯,即...

    重复元素全排列

    - 程序首先从用户那里获取两个输入:一个整数n(表示元素的数量)和一个由n个字符组成的字符串(表示元素集合)。这些输入被写入到一个名为`input.txt`的文件中。 - 接下来,程序读取`input.txt`文件中的数据,对...

    求任意几个数的全排列

    全排列是组合数学中的一个重要概念,它指的是从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排列起来,所有可能的排列方式称为全排列。在这个程序中,我们关注的是如何通过编程来求解任意几个数的全排列问题。...

    输出n个整数的全排列

    在这个C++程序实验中,我们将深入理解如何生成一个给定整数集合的全排列。这个任务通常用递归或回溯法来解决,对于学习编程和算法思维具有很高的价值。 全排列是指从n个不同元素中取出n个元素,按照一定的顺序排列...

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

    首先,集合的子集是指从一个给定集合中选择一部分元素(可以为空)形成的新集合。每个元素可以选择或者不选择,因此对于一个包含n个元素的集合,它的子集总数是2^n。非递归地求解所有子集通常采用位运算的方法。例如...

    c++编写的全排列源代码

    本文将深入解析一个C++程序示例,该程序旨在生成指定数字集合的所有可能全排列,这对于理解递归算法、数组操作以及逻辑判断等核心编程概念具有重要价值。 ### 全排列的概念 全排列是指从n个不同元素中取出m(m≤n)...

    c++实现全排列

    对于一个包含 N 个元素的集合,其全排列有 N! 种情况。我们可以找到一种算法,使得我们可以找到一个从 0 到 N!-1 之间取值的“下标”,每个下标可以直接得到一个排列情况。这样,我们就可以用一个简单的 for 循环,...

    全排列算法解析(完整版)

    全排列是指从一个包含`n`个不同元素的集合中选取全部`n`个元素,并按一定顺序排列形成的不同序列总数。数学上,`n`个不同元素的全排列数记为`n!`(`n`的阶乘),即`n! = n × (n-1) × (n-2) × ... × 1`。例如,...

    c#全排列的算法

    在计算机科学中,全排列是指对一个集合中的所有元素进行排列的操作。全排列算法是一种常用的算法,用于生成所有可能的排列方式。在C#中,可以使用递归或迭代的方式来实现全排列算法。 在给定的代码中,我们可以看到...

    全排列算法 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)...

    全排列-非递归算法

    这里以1到6的数字为例,我们可以构建一个迭代的解决方案来生成全排列。首先,我们需要一个容器,例如数组或列表,来存储当前排列的元素。初始状态下,容器为空,然后依次将数字1到6添加到容器中,每次添加时,确保新...

    易语言源码易语言数字文本的全排列.rar

    5. 为了防止重复排列,通常需要一个辅助数组或集合来跟踪已使用的数字,确保每次选择的数字都是未被使用过的。 在实际的易语言代码中,你可能会看到类似`整数数组`、`循环`、`递归调用`等关键字和结构。此外,为了...

    n个数的全排列

    2. 定义一个递归函数,接收当前已填入的数字序列(部分排列)和剩余未使用数字的集合。 3. 在递归函数的基线条件中,检查部分排列是否已填满n个数字,如果是,则将其添加到结果数组中。 4. 对于每个未使用的数字,将...

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

    其基本思路是从集合中依次选取每一个元素作为排列的第一个元素,然后对剩下的元素继续进行全排列,直到所有元素都被排列完成。这种方法利用了递归的特性,不断地分解问题直至达到最简单的基本情况,然后再逐步回溯...

    全排列算法部分算法需要自己优化修改

    全排列算法是计算机科学中一个基础且重要的问题,它涉及到数组或序列的所有可能的线性排列方式。在处理这个问题时,我们通常会采用递归或迭代的方式来实现。下面将详细介绍全排列算法及其优化方法。 全排列算法的...

    关于全排列算法

    全排列算法是计算机科学中的一种经典算法,主要应用于解决如何生成一个给定集合的所有可能排列的问题。在给定的题目中,作者通过一个简单的递归方法实现了全排列的计算。以下是对该算法的详细解析: 首先,我们来看...

    全排列VC源代码,仅供参考

    我们可以定义一个函数,该函数接收一个未排列的元素集合和已排列的部分序列。对于每个未排列的元素,将其添加到排列序列的末尾,并递归处理剩余的元素。当所有元素都被添加到序列后,就找到了一个排列。如果所有排列...

    quanpailie.rar_C++quanpailie_quanpailiec++_一组数全排列_全排列

    在全排列问题中,我们可以从第一个元素开始,依次尝试与未使用的元素交换位置,如果当前元素的位置合法(即未出现在前面的位置),则继续尝试下一个元素,否则回溯到上一个元素,尝试其他未尝试过的元素。以下是一个...

    CC++全排列..1--n的全排列以及字符串的全排列

    在计算机科学中,全排列是一个非常重要的概念,它指的是将一个集合中的元素按照一定的顺序排列出来的所有可能的排列方式。在这个文件中,我们将讨论CC++中生成从1到n的全排列算法,以及字符串的全排列算法。 一、...

Global site tag (gtag.js) - Google Analytics