字符串的全排列

[ 伪代码描述 ]

void Permutation(需要处理的字符串, 需要进行处理的字符串的起始位置)
{
    if(扫描完成整个字符串)
        输出当前字符串;

    for(对即将处理的字符串中的每个字符)
    {
        将当前的字符提前到第一个位置;
        求除了第一个字符外,后面所有字符的全排列;
        将提前到第一个位置的字符恢复到未提前之前的位置,以便不影响下次的处理;
    }

}

[ C++实现 ]

template   
void CalcAllPermutation(T perm[], int first, int num)  
{  
    if (num <= 1)
        return;  
      
    for (int i = first; i < first + num; ++i) 
    {  
        swap(perm[i], perm[first]);  
        CalcAllPermutation(perm, first + 1, num - 1);  
        swap(perm[i], perm[first]);  
    }  
} 

你可能感兴趣的:(字符串的全排列)