中易网

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

答案:2  悬赏:0  
解决时间 2021-04-28 15:50

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

最佳答案

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

全部回答

排列递归式干什么的?

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

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
完美国际里为什么别人能用的网名符号我用的时
1980年10月26日出生什麽星座
什么时候用干簧继电器或电磁继电器?
高手进来看下这个电脑配置?
电脑用户名
小草 太阳 树木 怎样写成一个童话故事?
古代春秋战国的“野战”是什么意思?
医生请帮帮我吧!
转让的QQ,没有会员了,回怎么样?
瑞阳豪庭在什么地方啊,我要过去处理事情
如何理解PreparedStatementCache,以及如何使
支付宝怎么用啊?
我要出版文章
湄江高级中学在哪里啊,我有事要去这个地方
谁发给我一个山脊赛车2 5.50P4的存档 我QQ771
推荐资讯
陕西省是高原吗?
是不是结婚了以后就可以有爱了?不是都说感情
山洋牌踏板摩托大灯总成多少钱
大学里学分的来源有哪些
爱一个人和恨一个人,那个更让人难受?
寻仙;我把那个凝香草给毁了。在从哪找呀、、
CF爆头更换器下载有病毒吗?
为什么我打开完美神话会出现错误代码:0000000
我想买诺基亚1500到2000左右的手机,什么型号
我狂战士的条件都满足了怎么不行学血之狂暴
英雄联盟青铜段位男刀和老鼠那个上分好。
元港元气火锅(银泰城店)地址在什么地方,想过
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?