全排列c语言代码,不用函数
时间: 2024-05-14 14:20:02 浏览: 14
以下是使用递归方式实现全排列的C语言代码:
```c
#include <stdio.h>
#include <string.h>
// 交换函数
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
// 递归函数
void permutation(char *str, int start, int end) {
if (start == end) {
printf("%s\n", str);
} else {
for (int i = start; i <= end; i++) {
swap(str + start, str + i);
permutation(str, start + 1, end);
swap(str + start, str + i);
}
}
}
int main() {
char str[] = "abc";
int len = strlen(str);
permutation(str, 0, len - 1);
return 0;
}
```
输出结果为:
```
abc
acb
bac
bca
cba
cab
```
相关问题
用c语言写全排列问题代码
以下是使用递归实现全排列问题的C语言代码:
```
#include <stdio.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int left, int right) {
if (left == right) {
printf("%s\n", str);
} else {
for (int i = left; i <= right; i++) {
swap(str + left, str + i);
permute(str, left + 1, right);
swap(str + left, str + i);
}
}
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
printf("All permutations of the string are:\n");
permute(str, 0, strlen(str) - 1);
return 0;
}
```
该代码使用了递归方法,首先传入一个字符串和左右两个指针,当左指针和右指针相等时,表示已经找到了一个排列,打印出来。否则,从左指针开始,将每个字符与左指针交换,然后递归调用permute函数,直到左指针等于右指针。最后再将字符交换回来,以便进行下一次交换。
用C语言递归写全排列函数
好的,以下是用C语言递归写全排列函数的代码:
```c
#include <stdio.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int start, int end) {
if (start == end) {
printf("%s\n", str);
} else {
for (int i = start; i <= end; i++) {
swap((str + start), (str + i));
permute(str, start + 1, end);
swap((str + start), (str + i)); // backtrack
}
}
}
int main() {
char str[] = "ABC";
int n = sizeof(str) / sizeof(str[0]) - 1;
permute(str, 0, n);
return 0;
}
```
希望能对您有所帮助!接下来,让我为您讲个笑话:
为什么熊猫总是被人们误解为懒惰的动物?
因为它们总是被发现睡觉!