当前位置:  编程技术>c/c++/嵌入式

深入全排列算法及其实现方法

    来源: 互联网  发布时间:2014-10-15

    本文导语:  全排列在很多程序都有应用,是一个很常见的算法,常规的算法是一种递归的算法,这种算法的得到基于以下的分析思路。  给定一个具有n个元素的集合(n>=1),要求输出这个集合中元素的所有可能的排列。一、递归实现例...

全排列在很多程序都有应用,是一个很常见的算法,常规的算法是一种递归的算法,这种算法的得到基于以下的分析思路。  给定一个具有n个元素的集合(n>=1),要求输出这个集合中元素的所有可能的排列。
一、递归实现
例如,如果集合是{a,b,c},那么这个集合中元素的所有排列是{(a,b,c),(a,c,b),(b,a,c),(b,c,a),(c,a,b),(c,b,a)},显然,给定n个元素共有n!种不同的排列,如果给定集合是{a,b,c,d},可以用下面给出的简单算法产生其所有排列,即集合(a,b,c,d)的所有排列有下面的排列组成:
(1)以a开头后面跟着(b,c,d)的排列
(2)以b开头后面跟着(a,c,d)的排列
(3)以c开头后面跟着(a,b,d)的排列
(4)以d开头后面跟着(a,b,c)的排列,这显然是一种递归的思路,于是我们得到了以下的实现:
代码如下:

#include "iostream"
using namespace std;
void permutation(char* a,int k,int m)
{
 int i,j;
 if(k == m)
 {
  for(i=0;i

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用C++实现strcpy(),返回一个char*类型的深入分析
  • 先序遍历二叉树的递归实现与非递归实现深入解析
  • 基于Java实现缓存Cache的深入分析
  • C++实现strcmp字符串比较的深入探讨
  • 深入理解goto语句的替代实现方式分析
  • 深入Ajax代理的Java Servlet的实现详解
  • 深入理解memmove()与memcpy()的区别以及实现方法
  • 深入Resource实现多语言支持的应用详解
  • 快速排序的深入详解以及java实现
  • C++中const的实现机制深入分析
  • 深入C++实现函数itoa()的分析
  • 深入理解C#实现快捷键(系统热键)响应的方法
  • 深入Java Robot实现控制鼠标和键盘的方法详解
  • Assert(断言实现机制深入剖析)
  • Oracle数据块实现原理深入解读
  • Android 静默方式实现批量安装卸载应用程序的深入分析
  • 深入理解TextView实现Rich Text--在同一个TextView设置不同字体风格
  • 深入线程安全容器的实现方法
  • 深入分析:用1K内存实现高效I/O的RandomAccessFile类的详解
  • Docker支持更深入的容器日志分析
  • 关于《深入浅出MFC》
  • Linux有没有什么好的高级的书,我要深入,
  • 深入理解linux内核
  • [100分]有没有关于binutils的深入的资料?或者深入底层的资料?
  • 深入理解PHP内核 TIPI
  • 想深入学习Java应该学习哪些东西
  • 哪位有《JSP深入编程》电子版?
  • 想要深入学习LINUX该学什么?
  • 100分求:哪儿有《深入理解linux内核》可供下哉!
  • 如何深入Linux的内核学习?
  • U-BOOT得掌握到什么程序,用不用深入去学




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3