- #include<iostream>
- using namespace std;
- template < class T>
- void perm(Ta[], 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)
- {
- Tytemp=a;
- a=b;
- b=temp;
- }
- int main()
- {
- int a[]={1,2,3};
- perm(a,0,2);
- }