Files
workspace/c/allarrange.c
e2hang ebcee63b7c New
2026-01-09 00:05:37 +08:00

46 lines
896 B
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
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;
}