程序:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
template <class T>
void perm(T list[], int k, int m)
{//产生list[k:m]的所有排列
if (k==m)
{//单元素排列
for (int i=0; i<=m; i++)
cout << ' '<< list[i];
cout << endl;
}
else
{//多元素序列,递归产生排列
for (int i=k; i<=m; i++)
{
swap(list[k],list[i]);
perm(list,k+1,m);
swap(list[k],list[i]);//恢复原来的次序为下一次排序做准备
}
}
}
int main()
{
string list[10] = { "x0","x1","x2","x3"};
perm(list,0,3);
}
心得:
学会运用递归算法将大型问题小型化,一个个简单的来解决!!