全排列算法

来源:互联网 发布:win7系统盘清理软件 编辑:程序博客网 时间:2024/05/17 09:47

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



算法题:用你熟悉的编程语言,设计如下功能的函数:输入一个字符串,输出该字符串中所有字母的全排列。程序请适当添加注释。
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;elsecontinue;}}return 0;}


0 0
原创粉丝点击