非递归实现不重复序列的全排列(一)

原创 2004年07月21日 14:29:00

笔者曾写过利用递归实现不重复序列全排列的例子http://blog.csdn.net/northwolves/archive/2004/04/07/19590.aspx

现在给出另一个利用进制实现的代码:

Sub pailie1(ParamArray x())
Dim starttime As Single, endtime As Single
Dim n As Integer, i As Long, Num As Integer, j As Integer
Dim temp1() As String, temp2 As Long, all As New Collection
n = UBound(x) + 1 '元素个数
starttime = Timer '开始计时
ReDim temp1(1 To n)
For i = 0 To n ^ n - 1
temp2 = i
Set all = Nothing
On Error Resume Next
For j = n To 1 Step -1
temp1(j) = x(temp2 Mod n) '转换为n进制
all.Add temp1(j), temp1(j) '防止某一元素重复列出
temp2 = temp2 / n
Next
If all.Count = n Then
Debug.Print Join(temp1, " ") '输出
Num = Num + 1
End If
? DoEvents
Next
endtime = Timer
Debug.Print "共 " & Num & " 种排列!用时 " & endtime - starttime & " 秒!"
End Sub

Private Sub Command1_Click()
pailie1 "a", "b", "c", "d", "e", "f", "g"
End Sub

n个元素的全排列(递归+去重)

排列组合是算法常用的基本工具,如何在c语言中实现排列组合呢?思路如下:本文主要探讨递归实现,由于递归将问题逐级分解,因此相对比较容易理解,但是需要消耗大量的栈空间,如果线程栈空间不够,那么就运行不下去...
  • cyuyanenen
  • cyuyanenen
  • 2016年06月16日 13:10
  • 5199

全排列的简单递归方法(有重复元素和无重复元素的递归算法)

无论是有重复元素还是无重复元素
  • u014520745
  • u014520745
  • 2014年10月29日 15:35
  • 2324

全排列的实现方法--递归&字典序

一:背景 全排列在很多笔试都有应用,是一个很常见的算法,关于这类的题目变化很多。这种算法的得到基于以下的分析思路。  给定一个具有n个元素的集合(n>=1),要求输出这个集合中元素的所有可能的排列。 ...
  • LaoJiu_
  • LaoJiu_
  • 2016年04月11日 15:33
  • 5280

无重复全排列_非递归实现

无重复全排列_非递归实现,用C++非递归方法输出无重复字符串的全排列。
  • yuyaweibest
  • yuyaweibest
  • 2016年09月30日 14:25
  • 388

N个字符全排列的非递归实现

(二)非递归全排列算法,即按字典序排列算法。 基本思想是:     1.对初始队列进行排序,找到所有排列中最小的一个排列Pmin。     2.找到刚刚好比Pmin大比其它都小的排列P(min+...
  • lin200753
  • lin200753
  • 2014年05月31日 00:15
  • 459

字符串的全排列非递归实现算法

题目类似剑指offer的第28题,这里在粘贴一下:题目:输入一个字符串,打印出该字符串中字符放入所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、b...
  • moses1213
  • moses1213
  • 2016年04月04日 20:30
  • 278

全排列---非递归实现

全排列的非递归实现 算法描述实现全排列的非递归的排列,首先我们要明确排列的顺序,这样我们才会不会漏掉任何一个排列,我们按照从小到大的顺序排列,例如:“1234”的下一个就是“1243”,在下一个就是“...
  • fern_girl
  • fern_girl
  • 2017年04月21日 23:07
  • 128

字符串全排列-非递归实现

一个算法命题:给定字符串S[0…N-1],设计算法,枚举S的全排列。如:123,全排列就是:123,132,213,231,312,321 算法思考 由123的全排列:123,132,213,23...
  • maoyuanming0806
  • maoyuanming0806
  • 2017年12月29日 13:06
  • 26

全排列(深度优先搜索非递归实现)

前段时间面试了一家公司的图像岗位,居然尽问我C++的知识,还让我写全排列,表示无语……,不过还是硬着头皮写了下,这么久没接触算法,之前也没写 基本思路是DFS,考虑到递归的栈消耗,于是用数组...
  • soidnhp
  • soidnhp
  • 2015年03月20日 18:14
  • 1353

全排列算法之非递归实现

全排列算法之非递归实现 算法的核心思想是如何求下一个排列?例如求23543的下一个排列我们从后往前找相邻的2个递减数字即3,5,那么3就是我们要替换的数字,再从后面找一个比3大的最小数即4,把它...
  • u012736084
  • u012736084
  • 2014年03月14日 18:39
  • 1521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:非递归实现不重复序列的全排列(一)
举报原因:
原因补充:

(最多只允许输入30个字)