您的位置:首页 > 其它

递归算法之排列问题解读

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: