【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】
题目:
输出字符串的所有排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba
题目分析:
1、先遍历字符串,然后顺序交换字符串的两个字符,然后再次递归后,把刚才那两个字符交换回来
算法实现:
#include <iostream>
using namespace std;
void str_permutation(char* str, char* start)
{
if(*start == '\0')
std::cout<<str<<std::endl;
char *temp = start;
while(*temp != '\0')
{
swap(*start, *temp);
str_permutation(str, start+1);
swap(*start, *temp);
temp++;
}
}
int main(void)
{
char str[] = "123";
str_permutation(str,str);
return 0;
}