/*
* 全排列
* 无相同元素
* 1. 取第1个元素插入空字串, 1种情况
* 2. 取第2个元素插入长度为1的字串, 1*2 = 2种情况, 例如 'b'插入"a",可以在'a'前, 'a'后
* 3. 取第3个元素插入长度为2的字串, 2*3 = 6种情况, 例如 'c'插入 "ab",可以在'a'前, 'b'前, 'b'后
* ...
* n. 取第n个元素插入长度n-1的字串, n!种情况.
*/
#include <iostream>
#include <cstring>
#include <stdlib.h>
using namespace std;
const int STRING_LENGTH = 6;
const int MAX_ELEMENTS_COUNT = 5;
const int MAX_ELEMENTS_COUNT_FACTORIAL = 120;
void insert(char c, char * str, int index, char *output);
void allSequences(string source) {
int strLength = source.length();
const char *strChars = source.c_str();
char *MAP[M
* 全排列
* 无相同元素
* 1. 取第1个元素插入空字串, 1种情况
* 2. 取第2个元素插入长度为1的字串, 1*2 = 2种情况, 例如 'b'插入"a",可以在'a'前, 'a'后
* 3. 取第3个元素插入长度为2的字串, 2*3 = 6种情况, 例如 'c'插入 "ab",可以在'a'前, 'b'前, 'b'后
* ...
* n. 取第n个元素插入长度n-1的字串, n!种情况.
*/
#include <iostream>
#include <cstring>
#include <stdlib.h>
using namespace std;
const int STRING_LENGTH = 6;
const int MAX_ELEMENTS_COUNT = 5;
const int MAX_ELEMENTS_COUNT_FACTORIAL = 120;
void insert(char c, char * str, int index, char *output);
void allSequences(string source) {
int strLength = source.length();
const char *strChars = source.c_str();
char *MAP[M