#include #include #include #include void dfs(char* arr, char* path, bool* visited, int num) { int n = strlen(arr); if (num == n) { printf("%s\n", path); return; } int m = strlen(path); for (int i = 0; i < n; i++) { if (!visited[i]) { char* tmp = (char*)realloc(path, (m + 2) * sizeof(char)); tmp[m] = arr[i]; tmp[m + 1] = '\0'; visited[i] = true; dfs(arr, tmp, visited, num + 1); visited[i] = false; } } } int main() { char arr[1000]; bool visited[1000] = {0}; fgets(arr, 1000, stdin); int len = strlen(arr); if (len > 0 && arr[len - 1] == '\n') arr[len - 1] = '\0'; char* path = (char*)malloc(1); path[0] = '\0'; dfs(arr, path, visited, 0); free(path); return 0; }