C++递归方法实现全排列
#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++递归方法实现全排列相关推荐
- Python 非递归方法的全排列
python algorithm 全排列(Permutation) 排列 (Permutation)是将相异物件或符号根据确定的顺序重排.每个顺序都称作一个排列. 例如,从一到六的数字有720种排列, ...
- python全排列字典序输出 递归_全排列-字典序列、递归方法c语言实现
当前位置:我的异常网» C语言 » 全排列-字典序列.递归方法c语言实现 全排列-字典序列.递归方法c语言实现 www.MyException.Cn 网友分享于:2014-04-20 浏览:4次 ...
- java 全排列 可重复_java 用递归方法求n个数的无重复全排列
public class Permutation{ private int[] table; public Permutation(int n) // 构造方法 ...
- 全排列---STL方法与递归方法
1.STL-<algorithm>中的两个函数next_permutation和prev_permutation next_permutation:对于当前的排列,如果在字典序中还存在下一 ...
- 字母全排列——递归方法
算法分析 设有一字母数组为: word = {'a','b','c','d'-} 假设word当前只有四个与元素,分别为a.b.c.d: 如果需要将word数组按照全排列打印的话,则所有的结果有4 ...
- 全排列的生成算法:字典序法
全排列的生成算法:字典序法 全排列的生成算法 对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来. 字典序法按照字典序求下一个排列的算法 生成给定全排列的下一个排列所 ...
- 全排列函数、组合函数
1 1.求一个全排列函数:如p([1,2,3])输出: [123],[132],[213],[231],[321],[312]. 2.求一个组合函数如p([1,2,3])输出: [1],[2],[3] ...
- 递归全排列 python实现
"""全排列 用递归方法全排列: 1.列表只有一个元素[a],它的全排列只有a. 2.列表有两个元素[a, b],它的全排列为[a, b], [b, a]:{ 将第一个元 ...
- python全排列,递归
"""全排列 用递归方法 全排列: 1.列表只有一个元素[a],它的全排列只有a. 2.列表有两个元素[a, b],它的全排列为[a, b], [b, a]: { ...
- 全排列递归与非递归python实现
全排列就是,给定一个序列,列举出该序列中元素所有的排列情况,列举方法有递归和非递归两种,详细可以见这位大神写的博客:https://blog.csdn.net/jopus/article/detail ...
最新文章
- win32汇编使用win32 api实现字符串拷贝
- Eclipse中写jsp文件时,发现里面加载不了js文件和css文件(解决css文件在eclipse中显示不了)
- .net core 使用redis 基于 StackExchange.Redis
- c++byte数组和文件的相互转换_经常对文件相互转换,全能转换工具,解决办公中遇到的所有难题...
- android车载娱乐系统场景,智能汽车、家庭娱乐系统、工业自动化场景中接口应用设计...
- Python爬取小说网站页面制作电子书
- [转帖]一些不该被埋没的好歌【全版】【2】
- 不定积分问题:1/x^3+1的不定积分求法
- L1-7 机工士姆斯塔迪奥
- 双重认证怎么开_facebook bm认证很重要
- Oracle 如何删除控制文件中rman备份到磁带的备份集信息(RMAN-06091)
- html5的canvas制作口红机闯关游戏(一)
- scala中的sealed
- [论文阅读]PAN++: Towards Efficient and Accurate End-to-End Spotting of Arbitrarily-Shaped Text
- android activity 实际,如何整合Zxing条形码扫描器而不安装实际的zxing应用程序(无法解析符号:.android.CaptureActivity)?...
- 查看pr 值是否劫持方法
- 应用程序正常初始化(0xc0000135)失败解决方法;附:该内存不能为“read”和“written”
- TLS协议分析 与 现代加密通信协议设计
- 社群裂变工具有哪些?进群宝到底有哪些实用的功能?
- 【社区图书馆】《uni-app跨平台开发与应用》读后感
热门文章
- (1)信息熵,条件熵,信息增益,信息增益率
- css基础知识汇总6
- 基于队列的医院挂号模拟系统
- mysql order优化2019_mysql 增加排序 性能差很多 怎么优化
- pytorch损失函数
- Docker操作命令——查看、停止、删除容器
- 使用Python进行差分进化全局优化
- java jsession,JSession
- C++ Segmentation fault 一般原因
- chainmaker-go-sdk get cert hash failed, get cert hash failed, send QUERY_SYSTEM_CONTRACT failed