- #include <iostream>
- using namespace std;
- template<class T>
- void perm(T a[], int k, int m)
- { //生成 a[k: m]的所有排列方式
- int i;
- if(k==m)
- { //输出一个排列方式
- for(i=0;i<=m;i++)
- cout << a[i];
- cout << endl;
- }
- else //a[k: m] 有多个排列方式
- { //递归产生这些方式
- for(i=k;i<=m;i++)
- {
- Swap(a[k], a[i]);
- perm(a, k+1, m);
- Swap(a[k], a[i]);
- }
- }
- }
- template<class Ty>
- inline void Swap(Ty &a, Ty &b)
- {
- Ty temp=a;
- a=b;
- b=temp;
- }
- int main()
- {
- int a[]={1,2,3};
- perm(a,0,2);
- }