【编程之法】有趣的字符串全排列

来源:互联网 发布:股票dma源码 编辑:程序博客网 时间:2024/06/06 03:08

输入一个字符串,打印出该字符串中所有字符的全排列。
如:输入字符串“abc”所能排列出来的所有字符串为:“abc”,”acb”,”bac”,”bca”,”cab”,”cba”.

解法一:递归实现
可以按照下述步骤执行:
*将a固定在第一位,求后面bc的排列,得到:”abc”,”acb”.
*将b固定在第一位,求后面bc的排列,得到:”bac”,”bca”.
*将c固定在第一位,求后面bc的排列,得到:”cab”,”cba”.
参考代码如下:

void CalcAllPermutation(char *perm, int from, int to){    if (to<=1)    {        return;    }    if (from == to)    {        for (int i = 0; i < to; i++)        {            cout << perm[i];        }        cout << endl;    }    else    {        for (int j = from; j <= to; j++)        {            swap(perm[j], perm[from]);            CalcAllPermution(perm, from + 1, to);            swap(perm[j], perm[from]);        }    }}
0 0