中易网

全排列递归(用C语言),能帮我改下吗??谢谢啦

答案:2  悬赏:0  
解决时间 2021-04-28 15:50
  • 提问者网友:美人如花
  • 2021-04-27 20:31

#include "stdio.h"
void swap(char a,char b)
{
char temp=a;
a=b;
b=temp;
}

void perm(char list[],int k,int m)
{ int i;
if(k==m)
{
for(i=0;i<=m;i++)
putchar(list[i]);
putchar('\n');
}
else
for(i=k;i<=m;i++)
{
swap(list[k],list[i]);
perm(list,k+1,m);
swap(list[k],list[i]);
}
}

void main()
{
char array[99];
int i,n;

printf("请输入字符个数(n<99):");
scanf("%d",&n);

printf("请输入字符:");
for(i=0;i<=n-1;i++)
scanf("%c",&array[i]);
printf("\n");

perm(array,0,n-1);
}

最佳答案
  • 二级知识专家网友:糜废丧逼
  • 2021-04-27 20:51

#include "stdio.h"
int line=0;
void swap(char*a,char*b)
{
char temp=*a;
*a=*b;
*b=temp;
}


void perm(char list[],int m,int n)
{
int i;
if (m<n-1)
{
perm(list, m+1, n);
for (i=m+1;i<n;i++)
{
swap(&list[m], &list[i]);
perm(list, m+1, n);
swap(&list[m], &list[i]);
}
}
else
{
printf("%s ", list);
if(line++%10==9)printf("\n");
}
}


void main()
{
char array[99];
int i,n;


printf("ÇëÊäÈë×Ö·û¸öÊý(n<99):");
scanf("%d",&n);
getchar();


printf("ÇëÊäÈë×Ö·û:");
for(i=0;i<=n-1;i++)
array[i]=getchar();
array[n]='\0';
perm(array,0,n);
}

全部回答
  • 1楼网友:荒唐后生
  • 2021-04-27 22:14

排列递归式干什么的?

建议在输入字符之前,加入fflush(stdin);语句,否则第一个读入的字符是\n

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息