全排列算法

关于全排列有许多方法,查了一下没有找到我的算法,这里分享给大家。



算法题:用你熟悉的编程语言,设计如下功能的函数:输入一个字符串,输出该字符串中所有字母的全排列。程序请适当添加注释。
C++函数原型: void Print(const char *str)
输入样例: abc
输出结果: abc、acb、bca、bac、cab、cba


算法思想:将每个位置的字符往前移,移动一次是一种排列方法,第一个a移动一次成为

bac,移动两次变成bca,到达字符串顶端,开始移动现在处于低端的b,也是两次,在移

动c,还是两次,即六种方法。

代码:

#include<iostream>
#include<string>
using namespace std;
int main(void)
{
	string Str1,Str2;
	int i,j;
	while (cin>>Str1)
	{
		Str2 = Str1;
		for (j = 0;j<Str2.size();j++)
			for (i = 0; i < Str2.size()-1; i++)
			{
				cout << Str2 << endl;
				swap(Str2[i],Str2[i + 1]);
				if (Str2 == Str1)
					break;
				else
					continue;
			}
	}
	return 0;
}
点赞