您的位置:首页 > 其它

字符串全排列

2016-01-16 11:32 393 查看
void swap(char *a, char *b)

{

char c;

c = *a;

*a = *b;

*b = c;

}

void printf_str(char *str, char *p_begin)

{

char *p_tmp;

if (0 == *p_begin) {

printf("%s\r\n", str);

return;

} else {

for (p_tmp = p_begin; 0 != *p_tmp; p_tmp++) {

swap(p_begin, p_tmp);

printf_str(str, p_begin + 1);

swap(p_tmp, p_begin);

}

}

}

int main(void)

{

char str[] = "abc"; //不能用 char *

printf_str(str, str);

}

//方案2

void printf_str2(char *str, int begin, int end)

{

int i;

if (begin + 1 == end) {

printf("%s\r\n", str);

return;

} else {

for (i = begin; i < end; i++) {

swap(&str[begin], &str[i]);

printf_str2(str, begin+1,end);

swap(&str[i], &str[begin]);

}

}

}

int main()

{

char str[]= "abc";

printf_str2(str, 0, strlen(str));

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: