#include<iostream>
using namespace std;
void perm(int list[],int k,int m);//声明
void perm(int list[],int k,int m)//调用
{if(k==m)//相等则输出,总是输出最后一层。{for(int j=0;j<=m;j++){cout<<list[j];}cout<<endl;}else{for(int i=k;i<=m;i++){swap(list[k],list[i]);//第一层,先和自己换。1和1换,2和2换,3就相等然后输出了。输出后回来,2和3换。perm(list,k+1,m);swap(list[k],list[i]);//将前面换回的顺序再换回来,防止变顺序。
     }}
}int main()
{//char a[7]="123456";int a[3]={0,1,2};perm(a,0,2);system("pause");return 0;
}

逻辑顺序:

第一层循环3次:

k=0,i=k=0,list[0]和list[0]交换。然后递归调用k+1=1,2

进入第二层,循环2次:

k=1,i=k=1,list[1]和list[1]交换,然后递归调用k+1=2,2

此时相等,输出结果,0,1,2(相当于没有循环或者循环1次)

然后回到第二层,循环第二层的第2次

k=1,i=k+1=2,list[1]和list[2]交换,然后递归调用k+1=2,2

此时相等,输出0,2,1

然后回到第一层,循环第一层的第2次,后面同次过程。

转载于:https://www.cnblogs.com/answer727/p/6942577.html

C++递归方法实现全排列相关推荐

  1. Python 非递归方法的全排列

    python algorithm 全排列(Permutation) 排列 (Permutation)是将相异物件或符号根据确定的顺序重排.每个顺序都称作一个排列. 例如,从一到六的数字有720种排列, ...

  2. python全排列字典序输出 递归_全排列-字典序列、递归方法c语言实现

    当前位置:我的异常网» C语言 » 全排列-字典序列.递归方法c语言实现 全排列-字典序列.递归方法c语言实现 www.MyException.Cn  网友分享于:2014-04-20  浏览:4次 ...

  3. java 全排列 可重复_java 用递归方法求n个数的无重复全排列

    public class Permutation{ private int[] table; public Permutation(int n)                    // 构造方法 ...

  4. 全排列---STL方法与递归方法

    1.STL-<algorithm>中的两个函数next_permutation和prev_permutation next_permutation:对于当前的排列,如果在字典序中还存在下一 ...

  5. 字母全排列——递归方法

    算法分析  设有一字母数组为: word = {'a','b','c','d'-} 假设word当前只有四个与元素,分别为a.b.c.d:  如果需要将word数组按照全排列打印的话,则所有的结果有4 ...

  6. 全排列的生成算法:字典序法

    全排列的生成算法:字典序法    全排列的生成算法 对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来.     字典序法按照字典序求下一个排列的算法 生成给定全排列的下一个排列所 ...

  7. 全排列函数、组合函数

    1 1.求一个全排列函数:如p([1,2,3])输出: [123],[132],[213],[231],[321],[312]. 2.求一个组合函数如p([1,2,3])输出: [1],[2],[3] ...

  8. 递归全排列 python实现

    """全排列 用递归方法全排列: 1.列表只有一个元素[a],它的全排列只有a. 2.列表有两个元素[a, b],它的全排列为[a, b], [b, a]:{ 将第一个元 ...

  9. python全排列,递归

    """全排列 用递归方法 全排列: 1.列表只有一个元素[a],它的全排列只有a. 2.列表有两个元素[a, b],它的全排列为[a, b], [b, a]:     { ...

  10. 全排列递归与非递归python实现

    全排列就是,给定一个序列,列举出该序列中元素所有的排列情况,列举方法有递归和非递归两种,详细可以见这位大神写的博客:https://blog.csdn.net/jopus/article/detail ...

最新文章

  1. win32汇编使用win32 api实现字符串拷贝
  2. Eclipse中写jsp文件时,发现里面加载不了js文件和css文件(解决css文件在eclipse中显示不了)
  3. .net core 使用redis 基于 StackExchange.Redis
  4. c++byte数组和文件的相互转换_经常对文件相互转换,全能转换工具,解决办公中遇到的所有难题...
  5. android车载娱乐系统场景,智能汽车、家庭娱乐系统、工业自动化场景中接口应用设计...
  6. Python爬取小说网站页面制作电子书
  7. [转帖]一些不该被埋没的好歌【全版】【2】
  8. 不定积分问题:1/x^3+1的不定积分求法
  9. L1-7 机工士姆斯塔迪奥
  10. 双重认证怎么开_facebook bm认证很重要
  11. Oracle 如何删除控制文件中rman备份到磁带的备份集信息(RMAN-06091)
  12. html5的canvas制作口红机闯关游戏(一)
  13. scala中的sealed
  14. [论文阅读]PAN++: Towards Efficient and Accurate End-to-End Spotting of Arbitrarily-Shaped Text
  15. android activity 实际,如何整合Zxing条形码扫描器而不安装实际的zxing应用程序(无法解析符号:.android.CaptureActivity)?...
  16. 查看pr 值是否劫持方法
  17. 应用程序正常初始化(0xc0000135)失败解决方法;附:该内存不能为“read”和“written”
  18. TLS协议分析 与 现代加密通信协议设计
  19. 社群裂变工具有哪些?进群宝到底有哪些实用的功能?
  20. 【社区图书馆】《uni-app跨平台开发与应用》读后感

热门文章

  1. (1)信息熵,条件熵,信息增益,信息增益率
  2. css基础知识汇总6
  3. 基于队列的医院挂号模拟系统
  4. mysql order优化2019_mysql 增加排序 性能差很多 怎么优化
  5. pytorch损失函数
  6. Docker操作命令——查看、停止、删除容器
  7. 使用Python进行差分进化全局优化
  8. java jsession,JSession
  9. C++ Segmentation fault 一般原因
  10. chainmaker-go-sdk get cert hash failed, get cert hash failed, send QUERY_SYSTEM_CONTRACT failed