简单全排列C递归实现 没考虑重复情况

本文介绍了一个使用C语言实现的字符串全排列算法。该算法通过递归调用和回溯技术来找出输入字符串的所有可能排列组合,并统计了排列总数。文章包含完整的源代码,有助于读者理解全排列的实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值