`
k_lb
  • 浏览: 792013 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

全排列递归算法(一)------------------第一篇BLOG,随便写点吧!

 
阅读更多

//递归全排列(一)

#include "iostream.h"
int pnum;
void Swap(char &a,char &b)
{//交换a和b
char temp=a;
a=b;
b=temp;
}

void Perm(char list[],int k,int m)
{//生成list[k..m]的全排列
int i;
if(k==m) //输出一个全排列形式
{
for(i=0;i<=m;i++)
cout<<list[i];
cout<<endl;
pnum++;
}
else
//list[k..m]有多个排列形式
//递归地产生这些全排列形式
for(i=k;i<=m;i++)
{
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}

main()
{
pnum=0;
char s[]="ABCDE";
Perm(s,0,4);
cout<<"/n"<<s<<"的全排列共有"<<pnum<<"个"<<endl;
}

分享到:
评论

相关推荐

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

    排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列; 全排列:当n==m时,称为全排列; 比如:集合{ 1,2,3}的全排列为: 代码如下: { 1 2 3} ...(3)不断将每个元素放作第一个元素,然

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

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

    《信息学竞赛宝典-基础算法》视频讲解-第2章 递归算法

    《信息学竞赛宝典--基础算法》,人民邮电出版社 c++基础算法视频讲解---第2...第02章 递归算法 第03章 枚举算法 第04章 递推算法 第05章 分治算法 第06章 贪心算法 第07章 排序算法 第08章 高精度算法 第09章 搜索算法

    全排列算法的非递归实现与递归实现的方法(C++)

    (一)非递归全排列算法基本思想是: 1.找到所有排列中最小的一个排列P. 2.找到刚刚好比P大比其它都小的排列Q, 3.循环执行第二步,直到找到一个最大的排列,算法结束.下面用数学的方法描述:给定已知序列 P = A1A2A3...

    C语言全排列算法函数库

    入口函数 void perm(int *list, int k, int m,int **outArray) ...第一个参数存储了1-m这m个数 第二个参数为0 第三个参数为m-1 第四个参数开辟了一个m!行、m列的内存区域,用于保存计算所得的全排列

    全排列的算法(有重复数据)

    n个有重复元素全排列:无重复的全排列为序列头元素与所有元素进行交换共n种情况,每种情况的后n-1位元素构成新的序列。 重复以上过程。因为有重复元素,想要序列不重复:(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

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为 ...为了更容易理解,将整组数中的所有的数分别与第一个数交换,这样就总是在处理后n-1个数的全排列。

    非递归的输出1-N的全排列实例(推荐)

    考虑[2,3,5,4,1]这个序列,从后往前寻找第一对递增的相邻数字,即3,5。那么3就是替换数,3所在的位置是替换点。 将3和替换点后面比3大的最小数交换,这里是4,得到[2,4,5,3,1]。然后再交换替换点后面的第一个数...

    python使用递归解决全排列数字示例

    第一种方法:递归复制代码 代码如下:def perms(elements): if len(elements) &lt;=1: yield elements else: for perm in perms(elements[1:]): for i in range(len(elements)): yield perm[:i] + elements[0:1...

    数据结构-字符串.pptx

    字符串 数据结构-字符串全文共87页,当前为第1页。 字符串 字符串的范畴非常广泛; 难题往往在此节出现; 掌握字符串的法门是 。 字符串问题的晦涩代表:KMP、Manacher 数据结构-字符串全文共87页,当前为第2页。 ...

    leetcode跳跃-leetcode:leetcode

    leetcode 跳跃 leetcode 介绍 leetcode刷题记录() ...34.在排序数组中查找元素的第一个和最后一个位置----二分查找 39.组合总和----回溯 42.(hard)接雨水----双指针或栈 46.全排列----回溯 48.旋转图像----数组变换

    C语言实现全排列算法模板的方法

    1.把第1个数换到最前面来(本来就在最前面),准备打印1xx,再对后两个数2和3做全排列。 2.把第2个数换到最前面来,准备打印2xx,再对后两个数1和3做全排列。 3.把第3个数换到最前面来,准备打印3xx,再对后两个数1...

    mio4#Leetcode#【算法模板】全排列1

    对于数组[1,2,3]递归第一层:分别交换1和1,1和2,1和3public static void permutation(int[] num, int st

    有重复元素的排列问题

    输入格式 第1行是元素个数n,1。接下来的1行是待排列的n个元素,元素中间不要加空格。 输出格式 程序运行结束时,将计算输出n个元素的所有不同排列。最后1行中的数是排列总数。 输入样例 4 aacc 输出样例 ...

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

    * 实现一个有序数组的二分查找算法* 实现模糊二分查找算法(比如大于等于给定值的第一个元素) ## 散列表* 实现一个基于链表法解决冲突问题的散列表* 实现一个LRU缓存淘汰算法 ## 字符串 ## 二叉树 ## 堆 ## 图 ##...

    常用算法代码

    | 二分查找(大于等于 V 的第一个值) 25 | 所有数位相加 25 Number 数论 26 1 |递推求欧拉函数 PHI(I) 26 |单独求欧拉函数 PHI(X) 26 | GCD 最大公约数 26 | 快速 GCD 26 | 扩展 GCD 26 | 模线性方程 A...

    LeetCode判断字符串是否循环-Data-Structures-and-Algorithms:记录学习数据结构与算法的笔记

    删除链表倒数第 n 个结点 21: 合并两个有序链表 141: 判断链表中是否有环 206: 反转单链表 876: 求链表中间结点 题目分类 栈 20: 有效的括号 155: 最小栈 232: 用栈实现队列(todo) 844: 比较含退格的字符串 224: ...

    《妙趣横生的算法(C语言实现)》(杨峰 编著)

    第1部分 基础篇 第1章 数据结构基础 1.1 什么是数据结构 1.2 顺序表 1.2.1 顺序表的定义 1.2.2 向顺序表中插入元素 1.2.3 从顺序表中删除元素 1.2.4 实例与分析 1.3 链表 1.3.1 创建一个链表 1.3.2 向链表中插入结点...

    构建大顶堆leetcode-data-structures-and-algorithms:数据结构和算法&编码访谈&LeetCode

    番外篇  --- 数组 concat 函数 splice 函数 链表 单向链表 双向链表 循环链表 有序链表 栈 顺序栈 链式栈 十进制转二进制 浏览器的前进、后退功能 队列 顺序队列 链式队列 顺序双端队列 链式双端队列 循环队列 击鼓...

Global site tag (gtag.js) - Google Analytics