`
CreazyApple
  • 浏览: 61737 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

递归思想实现全排列

 
阅读更多
#include <stdio.h>

int Swap(char *a,char *b)
{
    char c;
    c = *a;
    *a = *b;
    *b = c;
}

/*
 * 递归思想实现全排列
 * 对abc进行全排列,那么可以看做:ab的全排列+c和ac的全排列+b和bc的全排列+a三个的组合
 */
void Perm(char *list, int k)
{
    //排列list数组中k以后的子串
    int i;
    if ('\0' == list[k]) {//输出一个排列方式
        printf("%s\t",list);
        putchar('\n');
    }
    else
    {
        for (i=k; list[i]!='\0'; i++) {
            Swap (&list[k], &list[i]);
            Perm (list, k+1);//全排列右子串

            Swap (&list [k], &list [i]);
        }
    }
}

int main(int argc ,char *argv[])
{
    char string[10] = "123";
    Perm(string,0);
    return 0;
}

分享到:
评论

相关推荐

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

    全排列算法有两个比较常见的实现:递归排列和字典序排列。 (1)递归实现 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。 (2)字典...

    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

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

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

    python实现全排列代码(回溯、深度优先搜索)

    1 递归实现全排列(回溯思想) 1.1 思想 举个例子,比如你要对a,b,c三个字符进行全排列,那么它的全排列有abc,acb,bac,bca,cba,cab这六种可能就是当指针指向第一个元素a时,它可以是其本身a(即和自己进行交换),还...

    全排列.cpp 例如 123 132 213 231 312 321

    本程序是用C++实现,主要实现的是一种全排列的思想,具体的细节可以根据程序自己修改。该算法已是最优的递归实现!

    PHP实现字符串的全排列详解

    输入一个字符串,按字典序打印出该字符...3.回溯法思想 4.一张图和一个运行过程,只能慢慢体会了 &lt;?phpfunction test($str,$start,&$res){ //递归终止条件 if($start==strlen($str)){ $res[]=$str; return; } //

    全排列和棋盘覆盖的java实现代码

    计算机算法设计与实现的实验一 本人觉得它是对递归与分治策略思想最好理解的例子!

    201900302030_邵嘉明_实验一:递归练习1

    2、掌握递归的实现思想 2、输出这几个整数的全排列,每个数之间用半角“,”隔开,中间不要有空格,每个排列单独一行 3、程序一定要有Input、Output、En

    leetcode爬楼梯排列组合解法-algorithm_practice:对数据结构、算法相关的编程实践(DataStructureandAl

    (要求全部用哈希思想实现!) 2、链表 实现单链表、循环链表、双向链表 支持增删操作 实现单链表反转 实现两个有序的链表合并为一个有序链表 实现求链表的中间结点 实现:assignment1 【任务2 - 栈、队列与递归】 1、...

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

    3.4 递归与分治思想 3.4..1 基本概念 3.4.2 计算整数的划分数 3.4.3 递归的折半查找算法 3.5 贪心算法思想 3.5.1 基本概念 3.5.2 最优装船问题 3.6 回溯法 3.6.1 基本概念 3.6.2 四皇后问题求解 3.7 数值概率算法 ...

Global site tag (gtag.js) - Google Analytics