全排列

算法模板:

void permutation1(char* str,int sbegin,int send) //全排列的非去重递归算法

{

  if( sbegin == send) //当 sbegin = send时输出

  { 

    for(int i = 0;i <= send; i++) //输出一个排列

      cout << str[i]; cout << endl;

  }

  else

  {

    for(int i = sbegin; i <= send; i++) //循环实现交换和sbegin + 1之后的全排列

    {

      swap(str[i],str[sbegin]); //把第i个和第sbegin进行交换

      permutation1(str,sbegin + 1,send);

      swap(str[i],str[sbegin]); //【注1】交换回来

    }

   }

}

原文地址:https://www.cnblogs.com/yfz1552800131/p/8512621.html