递归生成全排列【C/C++】
简述
生成一个序列的全排列
算法伪代码
输入:
- n:表示序列长度
- char* a: 对应的序列
输出:
- 这个序列的全排列
满足要求:
- 必须使用全排列
- 对应的代码的参数
void pomi(char *arr, int k);
- 只能修改
pomi
函数内部的内容
算法思路:
k为0的时候,输出这个序列。
否则,创建一个新序列,在保持前n-k个字符都完全一样之后。选一个到第n-k位,并将后面的保持顺序放到之后。
进入到递归
#include <iostream>
using namespace std;
int n;
char *a;
void pomi(char *arr, int k);
int main(){cin >> n;a = new char[n];for (int i = 0; i < n; ++i) cin >> a[i];pomi(a, n);
}void pomi(char *arr, int k) {if(k==0) {for (int i = 0; i < n; ++i) cout << arr[i];cout << endl; return;}char *arr_ = new char[n];int i, j;// copy from old char* for (j = 0; j < n-k; ++j) arr_[j] = arr[j];// n-k mean n-k length char-site you have already choosen.for (i = n-k; i < n; ++i) {arr_[n-k] = arr[i];for (j=n-k+1; j <= i; ++j) arr_[j] = arr[j-1];for (j=i+1; j < n; ++j) arr_[j] = arr[j];pomi(arr_, k-1);}
}
递归生成全排列【C/C++】相关推荐
- 递归方式-全排列生成算法
http://blog.csdn.net/xiazdong/article/details/7986015 排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列: 全排列:当n==m时, ...
- python全排列字典序输出 递归_递归实现全排列,字典序法实现全排列
问题:全排列的递归实现 编程思想: 用1 2 3为例,全排列结果为123,132,213,231,321,312 根据全排列的找到规律 1.将当前元素与后面位置的每个元素依此交换 2.交换后取后一个 ...
- python生成全排列_如何通过python实现全排列
如何通过python实现全排列 这篇文章主要介绍了如何通过python实现全排列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 itertools模 ...
- python3数字全排列怎么搞_python使用递归解决全排列数字示例
第一种方法:递归 复制代码 代码如下: def perms(elements): if len(elements) <=1: yield elements else: for perm in p ...
- 通过康托逆展开生成全排列
康托展开的公式是:X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始). 例如,有一个 ...
- python递归 数字全排列_利用递归实现全排列(python)
利用递归实现全排列(python) """ 利用递归实现全排列 第一个位置可能有n种可能,第二个位置可能 有n-1种可能...... 代码思路就是第一个位置可以和n个元素 ...
- Java使用递归实现全排列的代码
将写内容过程经常用到的一些内容备份一下,下边内容是关于Java使用递归实现全排列的内容. public class AllPermutation {public static void main(St ...
- WPF下递归生成树形数据绑定到TreeView上
最终效果图:(用于学习类的效果 图片丑了点,看官莫怪) 新建窗体 然后在前端适当位置插入如下代码: <TreeView x:Name="departmentTree" Hei ...
- 生成全排列算法的实现(Johnson-Trotter)
生成全排列算法的实现(Johnson-Trotter) 如下是用Johnson-Trotter算法实现的n个数据的全排列,这些数据可任意,因为对于任意n个数据,都可与1至n这n个整数一一对应,因此,在 ...
最新文章
- 关于JAVA中log4j与logslf4j打印日志用法
- 祝师傅新婚快乐 :-)
- 你有没有觉得邮件发送人固定配置在yml文件中是不妥当的呢?SpringBoot 动态设置邮件发送人
- camvid数据集介绍_深度学习图像数据集介绍(MSCOCO)
- 用于科研的移动机器人平台推荐
- 加入初创企业需要想清楚的几个问题
- ipmsg飞鸽传书系统即时通讯
- 题解-ZeroJudge-c686 高斯符號
- 《笑傲网湖》第二回 VLAN
- 监听者模式 java_java监听者模式
- 用 JSON和userData 更全面的模拟 localStorage
- 游戏平台系统源码有多重要?
- 如何快速制作启动u盘
- 券商pb系统量化交易接口代码
- 饿了么神级UI组件库——Element-UI使用指南
- startx 启动过程
- 计算机开机进不去桌面,电脑开机直接跳过启动界面进去电脑桌面,想进bios进不去怎么办...
- [ Java ] 实现两个数加减乘除的简易计算器
- w11 php 环境变量
- 看房子软件测试初学者,新人必看,测试大佬私藏的入门性能测试五步走,果断收藏!...