为什么有些申请批得那么快# EB23 - 劳工卡
s*y
1 楼
求一个string的所有的permutation. C code如下:
int permutations(char *str)
{
int length, i, *used;
char *out;
length = strlen(str);
out = (char *)malloc(length+1);
if(!out)
return 0;
out[length] = '\0';
used = (int*)malloc(sizeof(int)*length);
if(!used)
return 0;
for(i=0;i used[i]=0;
DoPermute(str, out, used, length, 0);
free(out);
free(used);
return 1;
}
void DoPermute(char *str, char* out, int* used, int length, int recursLev)
{
int i;
if(recursLev==length)
{
printf("%s\n", out);
return;
}
for(i=0;i {
if(used[i])
continue;
out[recursLev] = str[i];
used[i] = 1;
DoPermute(str, out, used, length, recursLev+1);
used[i]=0;
}
}
int permutations(char *str)
{
int length, i, *used;
char *out;
length = strlen(str);
out = (char *)malloc(length+1);
if(!out)
return 0;
out[length] = '\0';
used = (int*)malloc(sizeof(int)*length);
if(!used)
return 0;
for(i=0;i
DoPermute(str, out, used, length, 0);
free(out);
free(used);
return 1;
}
void DoPermute(char *str, char* out, int* used, int length, int recursLev)
{
int i;
if(recursLev==length)
{
printf("%s\n", out);
return;
}
for(i=0;i
if(used[i])
continue;
out[recursLev] = str[i];
used[i] = 1;
DoPermute(str, out, used, length, recursLev+1);
used[i]=0;
}
}