您的位置:首页 > 其它

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

2010-12-20 19:43 253 查看
#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 list include