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条回答

    报告相同问题?

    悬赏问题

    • ¥15 求解 yolo算法问题
    • ¥15 虚拟机打包apk出现错误
    • ¥30 最小化遗憾贪心算法上界
    • ¥15 用visual studi code完成html页面
    • ¥15 聚类分析或者python进行数据分析
    • ¥15 三菱伺服电机按启动按钮有使能但不动作
    • ¥15 js,页面2返回页面1时定位进入的设备
    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝