全排列详解

来源:互联网 发布:直接购买已备案域名 编辑:程序博客网 时间:2024/06/07 20:31

最近笔试时遇到一道全排列的题,当时想到使用递归实现,但是由于时间问题最后还是没做出来,故趁有时间把其实现之。

代码如下:

<span style="color:#666666;">#include <iostream>using namespace std;void swap(char *a,char *b){char term;term = *a;*a = *b;*b = term;}bool Isswap(char * str,int m,int n){for (;m<n;m++){if (str[m] == str[n]){return false;}}return true;}void AllRange(char *str,int m,int len){if (m==len-1){cout<<str<<endl;}else{for (int i = m;i<len;i++){if (Isswap(str,m,i)){swap(&str[i],&str[m]);AllRange(str,m+1,len);swap(&str[i],&str[m]);}}}}void Permutation(char *str){if (str == NULL){return ;}AllRange(str,0,strlen(str));}void main(int argc, char **argv){char str[] = "abb";Permutation(str);}</span>



0 0