求集合全排列算法(递归)

本文详细介绍了如何使用递归算法求解集合的全排列问题。通过分析问题描述,提出将集合元素逐个与其他元素交换的思路,进而形成递归解决方案。并提供了相应的代码实现,展示如何生成给定集合如(1,2,3)的所有可能排列。" 107084230,8637663,WinForm设计模式:DesignMode深入理解,"['Windows应用开发', 'WinForm编程', '设计模式']
摘要由CSDN通过智能技术生成

问题描述

给定一个集合(a1,a2,a3,…,an),求该集合的所有排列。如集合(1,2,3)的所有排列为(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。

思路

可以发现,得到集合全排列的思想为求a1+(a2,a3,…,an)的全排列,而a1可以与集合中的n个元素进行交换,同理,(a2,a3,…,an)的全排列等于a2+(a3,a4,…,an)的全排列,以此类推,可以写出递归算法

代码

#include <iostream>
#include <cstdio>

using namespace std;

const int maxn = 1000;

void swap(int &a, 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值