今天面试问到了一道题目,也不知道讲清楚了没,当时自己的思维也有些乱!
求一个字符串的全排列。
void
all_sort(
char
*
a,
int
start,
int
end)
... {
if (start == end)
...{
for(int i = 0; i<=end; i++)
...{
printf("%c", a[i]);
}
printf(" ");
g_num++;
}
else
...{
for (int j = start; j<=end; j++)
...{
swap_char(a[start], a[j]);
int next_start = start+1;
all_sort(a, next_start, end);
swap_char(a[start], a[j]);
}
}
}
int main( int argc, char * argv[])
... {
char a[]="abcdef";
all_sort(a, 0, 3);
printf("total num:%d ", g_num);
return 0;
}
... {
if (start == end)
...{
for(int i = 0; i<=end; i++)
...{
printf("%c", a[i]);
}
printf(" ");
g_num++;
}
else
...{
for (int j = start; j<=end; j++)
...{
swap_char(a[start], a[j]);
int next_start = start+1;
all_sort(a, next_start, end);
swap_char(a[start], a[j]);
}
}
}
int main( int argc, char * argv[])
... {
char a[]="abcdef";
all_sort(a, 0, 3);
printf("total num:%d ", g_num);
return 0;
}