【算法分析与设计】全排列问题
2012-02-18 09:39
483 查看
给出一个字符串“ABCDEF”,输出它的全排列,这是一个基础的数学问题,目前已知的比较好的算法是基于交换的。
算法的时间复杂度是O(n!)
inline void swap(char &a,char &b) { char t=a; a=b; b=t;} void Perm(string arr,int n,int k=0)//一共n个元素,现在排到第k个了 { if(k==n)/*所有元素都已经排完,输出结果*/ { for(int i=0; i<n; ++i) cout<<arr[i]; cout<<endl; } else { for(int i=k; i<n; ++i)/*从自己开始,自己与自己以及后面的元素进行交换*/ { swap(arr[k],arr[i]); Perm(arr,n,k+1); swap(arr[k],arr[i]); } } }
算法的时间复杂度是O(n!)
相关文章推荐
- 【算法设计与分析】递归与分治----2.4 排列问题
- 算法分析与设计基础(1)汉诺塔问题
- 【算法设计与分析】2、棋盘覆盖问题
- 算法分析与设计之棋盘覆盖问题
- [算法设计与分析]3.3.1算术运算的妙用(开灯问题+间隔数)
- n阶Hanoi塔问题 - 算法设计与分析实验1
- 算法分析与设计实验二(关于动态规划问题)
- 算法分析之有重复元素的排列问题O(n!)
- 算法设计与分析--矩阵连乘顺序问题…
- 算法分析与设计实验三 回溯法 24点问题 n皇后问题
- 算法设计与分析--01背包问题(动态规划法解决)
- 算法分析与设计-13-活动安排问题的贪心算法
- 算法分析与设计之棋盘覆盖问题
- 计算机算法设计与分析之棋盘覆盖问题
- 【算法分析与设计】最小生成树问题
- 计算机算法设计与分析作业01:分治法求解大数乘法+L型骨牌的棋盘覆盖问题
- 算法分析与设计矩阵连乘问题
- [算法设计与分析]4.2.1枚举法(百钱百鸡问题2种解法+数字谜2种解法)
- 算法分析与设计课程作业第十六周——NP-完全问题证明
- 算法设计与分析--N皇后问题实现程…