首页 > 代码库 > 递归写出字符串全排列
递归写出字符串全排列
给出一个字符串,例如“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);//返回原来的样子,防止出现重复的结果 } }}
递归写出字符串全排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。