全排列(C++实现)
1、问题描述:一串字母/数字的组合,进行不同的排列顺序,最终全部打印出来。
分析:的用到递归的思想。
2、代码实现
考虑到通用性,模板的使用,所以用C++实现:
#include<iostream>usingnamespacestd;template<classType>//交换2个数的函数voidswap_(Type&a,Type&b){Typetmp=a;a=b;b=tmp;}template<classType>voidPerm(Typelist[],intk,intm){if(k==m){//结束条件for(inti=0;i<=m;i++){cout<<list[i];}cout<<endl;}else{for(inti=k;i<=m;i++){swap_(list[k],list[i]);Perm(list,k+1,m);//递归下一个数swap_(list[k],list[i]);}}}intmain(void){intar[]={1,2,3};intn=sizeof(ar)/sizeof(int);Perm(ar,0,n-1);//传ar,下标0,最后一个数字的下标(n-1)return0;}
结果如下
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。