码迷,mamicode.com
首页 > 其他好文 > 详细

递归写出字符串全排列

时间:2014-11-25 17:58:27      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   sp   for   div   log   bs   

给出一个字符串,例如“abc”,输出它的全排列及“abc”,"acb","bac","bca","cab","cba"。

递归的方法:

    核心思想:交换。

    全排列(“abc”)=a.全排列(“bc”)+b.全排列("ac")+c.全排列(“ab”),其中a.全排列(“bc”)=ab.全排列(“c”)+ac.全排列(“b”)=abc+acb

    

void swap(char *p, char *q){
         char temp=*p;
         *p=*q;
         *q=temp;
}

void perm(char *psStr, int k, int m){
         int i;
         if(k==m){
                 printf("%s\n", psStr);
         }
         else{
                 for(i=k;i<=m;i++){
                         swap(psStr+k, psStr+i);//交换开始位置与i位置的值
                         perm(psStr, k+1, m);
                         swap(psStr+k, psStr+i);//返回原来的样子,防止出现重复的结果
                 }
         }
}

 

递归写出字符串全排列

标签:style   blog   ar   color   sp   for   div   log   bs   

原文地址:http://www.cnblogs.com/focus1987/p/4121460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!