4、输出一个字符串所有排列。注意有重复字符。
#include<stdio.h>
#include<string.h>
void sortstr(char v[]);
char p[256];
void perm(char s[], int i, int n)
{
int j;
// char temp;
for(j=0;j<n;++j)
{
if(j!=0 && s[j]==s[j-1]);
else if(s[j]!='@')
{
p[i]=s[j];
s[j]='@';
if(i==n-1)
{
static int counter=0;
p[n]='\0';
printf("%d:%s ",++counter, p);
}
else
{
perm(s,i+1,n);
}//if(i==n-1)
s[j]=p[i];
}//if(j!=0 && s[j]==s[j-1]);
}// for(j=0;j<n;++j)
printf("\n");
}
--------------------------
void main()
{
char s[8]="abc";
printf("%d,%d\n",strlen(s),sizeof(s));
sortstr(s);
perm(s,0,strlen(s));
}
void sortstr(char v[])
{
int i = 0;
int j = 0;
int n=strlen(v);
char temp;
for(i = 0; i < n-1;i++)
{
for(j = i+1; j < n;j++)
{
if(v[i]>v[j])
{
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
}
}
}
输出一个字符串所有排列。注意有重复字符
最新推荐文章于 2024-03-17 10:59:06 发布