53.字符串的排列(字符串)。
题目:输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串 abc,则输出由字符 a、b、c 所能排列出来的所有字符串
abc、acb、bac、bca、cab 和 cba。
这道题花了我一天,要好好总结!
思路:这道题目感觉有些难,主要是字符串中的字符可能会有重复。我的想法是把一共有多少种字符和每种字符出现的次数统计出来,每个位置对这些字符变量,下一个位置的可用字符减小,再遍历。
/* 53.字符串的排列(字符串)。 题目:输入一个字符串,打印出该字符串中字符的所有排列。 例如输入字符串 abc,则输出由字符 a、b、c 所能排列出来的所有字符串 abc、acb、bac、bca、cab 和 cba。 */ #include <stdio.h> #include <string.h> #include <stdlib.h> char A[128][2] = {0}; //统计字符串中每种字符出现的次数 char ANS[10000]; //可能的输出 int N; //字符种类数 int LEN; //输入字符串长度 int getTimes(char * in) //统计字符个数 以及 每个字符出现的次数 { int len = strlen(in); bool B[100] = {0}; int n = 0; for(int i = 0; in[i] != '