大神来看看,关于字符全排列,我的代码还能再优化吗?
感觉自己写的很麻烦,期待更好的#include<stdio.h>
#include<string.h>
void change(char *,char*);
void ex(char *,int,int);
int p=0;
int main()
{
char a[10];
int k,m=0;
printf("请输入要排列的字符(至少三个): ");
gets(a);
k=strlen(a);
ex(a,m,k);
printf("\n共%d个\n",p);
return 0;
}
void ex(char *a,int m,int k)
{
int i,temp;
for(i=m;i<k;i++)
{
temp=a[m];
a[m]=a[i];
a[i]=temp;
if(k-m==3)
{
change(a,a+m);
break;
}
else
{
ex(a,++m,k);
}
m--;
temp=a[m];
a[m]=a[i];
a[i]=temp;
}
}
void change(char *a,char *b)
{
int i,temp;
for(i=0;i<6;++i)
{
temp=b[i%2];
b[i%2]=b[i%2+1];
b[i%2+1]=temp;
printf("%s\t",a);
p++;
}
}
[ 本帖最后由 Y影子Z 于 2012-10-27 21:55 编辑 ]