字符串的排序
字符串的排序输入一个字符串,打印出该字符串中字符的所有排序。思路:把字符串看成2部分。第1部分是它的第一个字符,第2部分是后面所有字符。 求全排列分成2部分。第1:求所有可能出现在第一个位置的字符,即把第一个字符和后面的所有字符进行交互。第2:固定第一个字符,求后面所有字符的全排列。这时候,仍然把后面所有字符分成2部分,同理。参考代码:root@gt:/home/git/Code# ./a...
·
字符串的排序
输入一个字符串,打印出该字符串中字符的所有排序。
思路:把字符串看成2部分。第1部分是它的第一个字符,第2部分是后面所有字符。
求全排列分成2部分。第1:求所有可能出现在第一个位置的字符,即把第一个字符和后面的所有字符进行交互。第2:固定第一个字符,求后面所有字符的全排列。这时候,仍然把后面所有字符分成2部分,同理。
参考代码:
root@gt:/home/git/Code# ./a.out
abc
acb
bac
bca
cba
cab
root@gt:/home/git/Code# cat permutation.c
#include <stdio.h>
void core(char* pstr,char* pbegin)
{
if(*pbegin == '\0')
{
printf("%s\n",pstr);
}
else
{
for(char* pch = pbegin;*pch != '\0';++pch)
{
char temp = *pch;
*pch = *pbegin;
*pbegin = temp;
core(pstr,pbegin + 1);
temp = *pch;
*pch = *pbegin;
*pbegin = temp;
}
}
}
void permutation(char* pstr)
{
if(pstr == NULL)
return;
core(pstr,pstr);
}
int main()
{
char pstr[] = {'a','b','c','\0'};
permutation(pstr);
return 0;
}
更多推荐
已为社区贡献6条内容
所有评论(0)