递归算法之排列问题解读
2012-03-29 19:36
155 查看
用递归实现对N个元素的排列:
template<class Type>
void Perm(Type list[], int k, int 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]; // 将元素换回以前的位置 以免影响后面的排列
}
}
template < class Type>
void swap( Type &a, Type &b)
{
Type tmp = a;
a = b;
b = tmp;
}
template<class Type>
void Perm(Type list[], int k, int 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]; // 将元素换回以前的位置 以免影响后面的排列
}
}
template < class Type>
void swap( Type &a, Type &b)
{
Type tmp = a;
a = b;
b = tmp;
}
相关文章推荐
- 排列问题的递归算法和非递归算法
- 递归算法-排列问题
- 全排列问题 递归算法
- 递归算法之排列问题
- n选m排列问题的递归算法
- n选m排列问题的递归算法
- 全排列问题(递归算法) 汇总
- 字符串排列组合问题&递归算法(1)
- 排列问题(递归算法)
- 递归算法---全排列
- 20162303 解读同伴的收获&解决同伴的问题 周三补交
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- hdu5753Permutation Bo(排列问题)
- 雇佣问题原址排列给定数组(randomize In Place)-c++代码实现及运行实例结果
- [黑马程序员]04[c语言]递归算法的妙用, 捕鱼量算法问题
- 算法学习日记 火车站出站问题序排列算法。
- 全排列问题
- 全排列问题
- 清华EMBA课程系列思考之九 -- 中国经济前沿问题解读
- 全排列问题(0907)