字符串的排列
2013-05-03 00:00
218 查看
/** * 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则 * 输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 */ #include <stdio.h> static void swap(char array[], int i, int j) { char tmp = array[i]; array[i] = array[j]; array[j] = tmp; } static int contains(char array[], int m, int n) { for(int i = m; i < n; ++i) { if(array[i] == array ) return 1; } return 0; } void permutation(char array[], int index, int n) { if(index == n) { for(int i = 0; i < n; ++i) { printf("%c", array[i]); } printf(" "); } else { for(int i = index; i < n; ++i) { // 去重比如字符数组是{'a', 'a', 'b'} if(contains(array, index, i)) continue ; swap(array, index, i); permutation(array, index + 1, n); swap(array, index, i); } } } main() { char array[] = {'a', 'b', 'c'}; permutation(array, 0, 3); } 运行结果: abc acb bac bca cba cab
相关文章推荐
- 28.字符串的排列
- 指定的字符串的大小写排列组合
- 面试28字符串的排列组合
- 我理解的剑指offer----字符串的全排列和组合算法
- 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- 剑指Offer—字符串排列
- 【剑指offer】之字符串的排列
- Morse Code HNUST 1675(字符串全排列 递归解决 数组a[]与流输入的缓慢)
- 字符串的排列组合问题
- 字符串的全排列问题(一)——无重复出现字符的排列
- java 字符串全排列 和 去重
- 《牛客网剑指offer27题》输入一个字符串,按字典序打印出该字符串中字符的所有排列
- 字符串的排列与组合
- 字符串的全排列和组合算法
- 字符串的排列
- uva140Bandwidth带宽——字符串处理加全排列
- 字符串的全排列和组合算法
- 字符串的全排列和组合算法
- 输入字符串,要求打印出所有字符排列的可能性
- 剑指offer 编程题(26):字符串全排列