美文网首页
全排列问题

全排列问题

作者: darkness605 | 来源:发表于2020-11-06 20:51 被阅读0次

具体算法流程:
数列:{1,2,3} 第一个与第一个交换
可以得到1 {2,3} 将序列{2,3}放进perm函数递归,然后

——递归{2,3}
数列{2,3}第一个与第一个交换
得到2{3} ,输出1,2,3 (此时low=high,因为序列{3}只有一位数,因此输出列表list)
数列{2,3}第一个与第一个交换回来,结果仍然是{2,3}
数列{2,3}第一个与第二个交换
得到3{2},输出1,3,2
{3,2}又第一个与第二个交换回来,变回{2,3}
—–{2,3}递归完毕序列恢复原状{1,2,3}

数列:{1,2,3} 第一个与第二个交换
可以得到2,{1,3}
——递归{1,3}
数列{1,3}第一个与第一个交换
得到1{3} ,输出2,1,3
数列{1,3}第一个与第一个交换回来,结果仍然是{1,3}
数列{1,3}第一个与第二个交换
得到3{1},输出2,3,1
{3,1}又第一个与第二个交换回来,变回{1,3}
—–{1,3}递归完毕
序列{2,1,3}第一个与第二个交换
序列恢复原状{1,2,3}

数列:{1,2,3} 第一个与第三个交换
可以得到3,{1,2}
——递归{1,2}
数列{1,2}第一个与第一个交换
得到1{2} ,输出3,1,2
数列{1,2}第一个与第一个交换回来,结果仍然是{1,2}
数列{1,2}第一个与第二个交换
得到2{1},输出3,2,1
{2,1}又第一个与第二个交换回来,变回{1,2}
—–{1,2}递归完毕
序列{3,1,2}第一个与第二个交换
序列恢复原状{1,2,3}

算法可以简单地写作
perm({1,2,3})=1perm({2,3})+2perm({1,3})+3perm({1,2})
perm({2,3})=2perm({3})+3perm({2})
perm({1,3})=1perm({3})+3perm({1})
perm({1,2})=1perm({2})+2perm({1})

代码如下;

void func(string data,int index)
{
    if(index == data.length()-1)
    {
        cout << data<<endl;
        return;
    }

    for(int i = index;i<data.length();++i){
        swap(data[i], data[index]);
        func(data, index + 1);
        swap(data[i], data[index]);
    }

}

转自:https://blog.csdn.net/a358463121/article/details/45543879?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf

相关文章

  • 全排列问题

    中午看到的一个题目。求一个不重复字符串的全排列。 主要有递归,字典序等解决方案。然后想到stl里的next_per...

  • 全排列问题

    题目:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例:输入: [1,2,3] 输出:[ [1,2,...

  • 全排列问题

    // 全排列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。/*解题:1、递归式:填好怕...

  • 深度优先搜索

    全排列问题。 迷宫问题。

  • leetcode全排列问题

    1.leetcode47 题目: 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入:[1,1,...

  • 递归--全排列问题

    前置文章:递归算法:www.jianshu.com/p/703069f3ba3f . 递归问题有两个经典的...

  • 数组全排列问题

    最近看到剑指offer上一道数组全排列的题目,看似很简单,仔细分析一下,还是有点难以理解,特此在这拆解下,希望能够...

  • 全排列与n皇后的关系与递归实现

    全排列 对于全排列中的一般问题则是根据字典序从小到大输出指定数量或者序列的全排列。一个简单的问题则是:指定n个整数...

  • 全排列问题偷鸡做法

    全排列问题偷鸡摸狗做法用强大的(猥琐的)next_permutation 31. 下一个排列 46. 全排列 47...

  • 递归算法

    问题1:给定不重复的字符串,如123,给出全排列 分析:算123的全排列,首先算以1开头的23的全排列,然后再算以...

网友评论

      本文标题:全排列问题

      本文链接:https://www.haomeiwen.com/subject/jcvqbktx.html