递归求全排列问题学习时间:2021-05-03 03:38:55 好长时间没有写递归程序了,就来练练手了! 递归求全排列,时间复杂度为指数级。 一个常用的递归算法,用C++代码实现。只是实现了核心递归功能,没有包装程序。 #include <iostream> #include <iomanip> using namespace std; int x[6]={10,2,30,4,5,6}; static int count=0; /*********************************************************************** 功能:全排列列举 参数:k为第一个位置,m为数组长度 返回:输出全排列 ***********************************************************************/ void PaiLie(int k,int m) { if (k==m) { count++; for (int i=0;i<m;i++)//输出结果 { cout<<setw(3)<<x[i]; } cout<<endl; } else { for (int i=k;i<m;i++) { swap(x[i],x[k]); PaiLie(k+1,m); //下一个排列 swap(x[i],x[k]);//恢复 } } } //主函数 int main(int argc,char* argv[]) { PaiLie(0,6); cout<<"总共得个数为:"<<count<<endl; return 0; }