现在的位置: 首页 > 综合 > 正文

递归算法之排列问题解读

2018年04月30日 ⁄ 综合 ⁄ 共 441字 ⁄ 字号 评论关闭

用递归实现对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;

}

抱歉!评论已关闭.