递归函数生成排列
2008-10-10 11:24
246 查看
#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);
}
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);
}
相关文章推荐
- 递归函数生成全排列
- 递归函数生成排列
- 用递归函数生成排列组合
- (python)编写程序,生成包涵20个随机数的列表,然后将前10升序排列,后10降序排列
- Poj-1731 Orders(生成可重集的排列)
- 生成1-n排列
- POJ 1833 生成排列
- 随机生成任意十个整数,分别利用冒泡和选择按从小到大排列。
- 组合序列、排列序列的生成实现
- 生成1~n的排列,以及生成可重集的排列
- 生成按色调饱和度排列的BMP位图
- 排列的生成算法(一)
- POJ 1731 Orders【生成有重集的全排列1.0】
- 高效生成所有的排列
- 递归算法生成n个元素的所有排列
- 生成组合和排列
- 递归的思想生成排列组合
- 算法--生成可重集排列
- 生成全排列(经典题 && 洛谷 P1706 )
- 暴力求解法_枚举排列(生成1~n 的排列,生成可重集的排列,下一个排列)