#include <stdio.h> #define MAX 100 int len, sum; char list[MAX]; static int perm(int k, int m); static int swap(int i, int j); int main() { scanf("%s",list); len = strlen(list); sum = perm(0, len-1);//not include '/n' printf("sum = %d/n", sum); return 0; } static int perm(int k, int m) { int i; if(k == len-2) { for(i = 0; i<= m; i++) { printf("%c", list[i]); } sum++; printf("/n"); } for(i = k; i <= m; i++) { swap(k, i); perm(k+1, m); swap(k, i);//回溯 } return sum; } static int swap(int i, int j) { char temp; temp = list[i]; list[i] = list[j]; list[j] = temp; return 0; }
简单全排列C递归实现 没考虑重复情况
最新推荐文章于 2025-03-20 14:34:04 发布
本文介绍了一个使用C语言实现的字符串全排列算法。该算法通过递归调用和回溯技术来找出输入字符串的所有可能排列组合,并统计了排列总数。文章包含完整的源代码,有助于读者理解全排列的实现原理。
2172

被折叠的 条评论
为什么被折叠?



