fasloww 2013-09-21 11:48 采纳率: 0%
浏览 913

C递归求全排列!求解释程序,不懂

#include
#include
void Permutation(char* pStr, char* pBegin);

void permutation(char* pStr)

{

Permutation(pStr, pStr);

}

void Permutation(char* pStr, char* pBegin)

{

if(!pStr || !pBegin)

return;

if(*pBegin == '\0')  
{  
    printf("%s\n", pStr);  
}  
else  
{  
     for(char* pCh = pBegin; *pCh != '\0'; ++ pCh)   
    {  
        // swap pCh and pBegin  
        char temp = *pCh;  
        *pCh = *pBegin;  
        *pBegin = temp;  

        Permutation(pStr, pBegin + 1);    
        // restore pCh and pBegin  
        temp = *pCh;  
        *pCh = *pBegin;  
        *pBegin = temp;  
    }  
}  

}

int main()
{
char str[] ={'a','b','c','d','\0'};
permutation(str);
getchar();
return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?