用c语言实现 题目描述 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有‘a’ <‘b’ < ... <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。 输入说明 只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。 输出说明 输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。
时间: 2023-05-21 12:03:22 浏览: 222
使用C语言解决字符串全排列问题
以下是用C语言实现的代码:
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int l, int r) {
if (l == r) {
printf("%s\n", str);
} else {
for (int i = l; i <= r; i++) {
swap(str + l, str + i);
permute(str, l + 1, r);
swap(str + l, str + i);
}
}
}
int main() {
char str[7];
scanf("%s", str);
int n = strlen(str);
permute(str, 0, n - 1);
return 0;
}
对于输入字符串的每个字符,我们可以将其与后面的字符交换,然后递归地对剩余的字符进行全排列。当递归到只剩一个字符时,我们就可以输出一个排列。注意,我们需要保证输出的排列按照字母序从小到大排列。
阅读全文