70 给出一个函数来输出一个字符串的所有排列
2014-10-15 22:21
453 查看
70.给出一个函数来输出一个字符串的所有排列。
ANSWER 简单的回溯就可以实现了。当然排列的产生也有很多种算法,去看看组合数学,
还有逆序生成排列和一些不需要递归生成排列的方法。
印象中 Knuth 的<TAOCP>第一卷里面深入讲了排列的生成。这些算法的理解需要一定的数
学功底,也需要一定的灵感,有兴趣最好看看。
同:/article/1554841.html
ANSWER 简单的回溯就可以实现了。当然排列的产生也有很多种算法,去看看组合数学,
还有逆序生成排列和一些不需要递归生成排列的方法。
印象中 Knuth 的<TAOCP>第一卷里面深入讲了排列的生成。这些算法的理解需要一定的数
学功底,也需要一定的灵感,有兴趣最好看看。
同:/article/1554841.html
/* 70.给出一个函数来输出一个字符串的所有排列。 ANSWER 简单的回溯就可以实现了。当然排列的产生也有很多种算法,去看看组合数学, 还有逆序生成排列和一些不需要递归生成排列的方法。 印象中 Knuth 的<TAOCP>第一卷里面深入讲了排列的生成。这些算法的理解需要一定的数 学功底,也需要一定的灵感,有兴趣最好看看。 同 53 */ #include<iostream> #include<stdio.h> using namespace std; void swap(char *a,char *b) { char t; t=*a; *a=*b; *b=t; } void printAllArray(char a[],int n,int index) { int i,j; if(index==n) { for(i=0;i<n;i++) printf("%c",a[i]); printf("\n"); return ; } for(j=index;j<n;j++) { swap(&a[index],&a[j]); printAllArray(a,n,index+1); swap(&a[index],&a[j]); } } int main() { char a[]="abcd"; char b[]="swg"; int len; //len=sizeof(a)/sizeof(char);//5 len=strlen(a); printAllArray(a,len,0);//4*3*2=24种 printf("*****************\n"); len=strlen(b); printAllArray(b,len,0);//3*2=6种 return 0; }
相关文章推荐
- 笔试题:给出一个函数来输出字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列
- 3、给出一个函数输出字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列
- 微软等数据结构+算法面试100题(2)--给出一个函数来输出一个字符串的所有排列
- 给出一个函数来输出一个字符串的所有排列。
- 给出一个函数来输出一个字符串的所有排列。
- 给出一个函数来输出一个字符串的所有排列
- 算法40(字符串的排列,给出一个函数来输出一个字符串的所有排列)
- 给出一个函数来输出一个字符串的所有排列
- 写一个函数输出一个字符串中的所有排列
- 使用内建的isinstance函数将一个list中所有的字符串变成小写,非字符串直接输出
- Swift - 排列组合之全排列 (输入一个字符串,输出该字符串包含的字符的所有组合)
- 编写函数fun(char *s),其功能是:把字符串中所有字符前移一个位置,串中的第1个字符移到最后。 例如,若输入字符串为:ABC123xyz ,则应输出字符串: BC123xyzA 。
- 输出一个字符串所有排列。注意有重复字符
- 输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba"
- 给定一个字符串,输出所有的排列组合方式
- 用递归的思想写编写一个函数reverse_string(char * string)实现字符串反向输出和反向排列
- 写正确函数需要注意的地方:输入一个字符串,打印出该字符串中字符的所有排列