简述

生成一个序列的全排列

算法伪代码

输入:

  • 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++】相关推荐

  1. 递归方式-全排列生成算法

    http://blog.csdn.net/xiazdong/article/details/7986015 排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列: 全排列:当n==m时, ...

  2. python全排列字典序输出 递归_递归实现全排列,字典序法实现全排列

    问题:全排列的递归实现 编程思想: 用1 2 3为例,全排列结果为123,132,213,231,321,312  根据全排列的找到规律 1.将当前元素与后面位置的每个元素依此交换 2.交换后取后一个 ...

  3. python生成全排列_如何通过python实现全排列

    如何通过python实现全排列 这篇文章主要介绍了如何通过python实现全排列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 itertools模 ...

  4. python3数字全排列怎么搞_python使用递归解决全排列数字示例

    第一种方法:递归 复制代码 代码如下: def perms(elements): if len(elements) <=1: yield elements else: for perm in p ...

  5. 通过康托逆展开生成全排列

    康托展开的公式是:X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始).   例如,有一个 ...

  6. python递归 数字全排列_利用递归实现全排列(python)

    利用递归实现全排列(python) """ 利用递归实现全排列 第一个位置可能有n种可能,第二个位置可能 有n-1种可能...... 代码思路就是第一个位置可以和n个元素 ...

  7. Java使用递归实现全排列的代码

    将写内容过程经常用到的一些内容备份一下,下边内容是关于Java使用递归实现全排列的内容. public class AllPermutation {public static void main(St ...

  8. WPF下递归生成树形数据绑定到TreeView上

    最终效果图:(用于学习类的效果 图片丑了点,看官莫怪) 新建窗体 然后在前端适当位置插入如下代码: <TreeView x:Name="departmentTree" Hei ...

  9. 生成全排列算法的实现(Johnson-Trotter)

    生成全排列算法的实现(Johnson-Trotter) 如下是用Johnson-Trotter算法实现的n个数据的全排列,这些数据可任意,因为对于任意n个数据,都可与1至n这n个整数一一对应,因此,在 ...

最新文章

  1. 关于JAVA中log4j与logslf4j打印日志用法
  2. 祝师傅新婚快乐 :-)
  3. 你有没有觉得邮件发送人固定配置在yml文件中是不妥当的呢?SpringBoot 动态设置邮件发送人
  4. camvid数据集介绍_深度学习图像数据集介绍(MSCOCO)
  5. 用于科研的移动机器人平台推荐
  6. 加入初创企业需要想清楚的几个问题
  7. ipmsg飞鸽传书系统即时通讯
  8. 题解-ZeroJudge-c686 高斯符號
  9. 《笑傲网湖》第二回 VLAN
  10. 监听者模式 java_java监听者模式
  11. 用 JSON和userData 更全面的模拟 localStorage
  12. 游戏平台系统源码有多重要?
  13. 如何快速制作启动u盘
  14. 券商pb系统量化交易接口代码
  15. 饿了么神级UI组件库——Element-UI使用指南
  16. startx 启动过程
  17. 计算机开机进不去桌面,电脑开机直接跳过启动界面进去电脑桌面,想进bios进不去怎么办...
  18. [ Java ] 实现两个数加减乘除的简易计算器
  19. w11 php 环境变量
  20. 看房子软件测试初学者,新人必看,测试大佬私藏的入门性能测试五步走,果断收藏!...

热门文章

  1. 小猿圈html5教程之canvas绘制线段方法
  2. 在EXCEL指定SHEET页,指定文字位置,插入批注
  3. 阿里云腾讯云服务器配置流程(lnmp或tomcat)
  4. React setState流程解析
  5. Android NotificationCompat通知消息
  6. 设计的核心任务之二:信息隐藏
  7. 【正一专栏】欧洲五大联赛猜想(一)德法意班霸集结寻求欧冠突破
  8. WingIDE 5的安装与破解方法
  9. [OpenCV] -- win7下配置OpenCV的Qt开发环境
  10. ccf权限查询java_201612-3 ccf 权限查询