weeew 发表于 2016-4-25 08:14:18

这几天一个关于排列组合的问题想不通,请各位指教

我想实现一个数字里面的几个元素的排列组合,但是实现不了

dim dtarr(苹果,梨,橘子,香蕉,西瓜)
For a = 1 To 5
For b = 1 To 5
   For c = 1 To 5
      For d = 1 To 5
      For e = 1 To 5
          dt(1) = dtarr(a)
      dt(2) = dtarr(b)
          dt(3) = dtarr(c)
            dt(4) = dtarr(d)
          dt(5) = dtarr(e)
    If dt(2) <> "西瓜" Or dt(4) <> "梨" Then
   For l = 1 To 5
      Cells(10 + m, l) = dt(l)
      
      Next
      m = m + 1
      End If
   
    Next e
    Next d
    Next c
   Next b
    Next a

kk_lee69 发表于 2016-4-25 10:32:39

回复 1# weeew

要的結果是怎樣的??

水木子 发表于 2016-4-25 10:35:29

原谅我语文太差,没看懂你是要干什么。

weeew 发表于 2016-4-25 12:33:42

回复 2# kk_lee69


    就是想列出所有的可能性
香蕉,苹果,梨,橘子,西瓜
苹果,梨,橘子,西瓜,香蕉
苹果,梨,西瓜,香蕉,橘子
苹果,橘子,西瓜,香蕉,梨

weeew 发表于 2016-4-25 12:36:32

回复 3# 水木子


    就是想实现 这几个元素的重新排
我实际是想弄个排值班的
周一到周五,5个人排班, 我想排出所有的可能性,对每次出现的进行判断是不是冲突。比如周二不能排周四不能排。
然后我用一位数组 下标表示星期,这样判断的时候我就能借助数组下标来判断是不是冲突

haijie1223 发表于 2016-4-25 17:47:03


#include <array.au3>
Dim $aArray = ['苹果', '梨', '橘子', '香蕉', '西瓜']
Dim $x = 0, $Num = CombineNum(UBound($aArray))
Dim $aCombine[$Num]
Combine($aArray, 0, UBound($aArray) - 1)
_ArrayDisplay($aCombine)

Func Combine($aArray, $k, $m)

Local $i, $str = ''

If $k > $m Then

For $i = 0 To $m

$str &= $aArray[$i] & "|"

Next

$aCombine[$x] = StringTrimRight($str, 1)

$x += 1

Else

For $i = $k To $m
;~
_ArraySwap($aArray[$k], $aArray[$i])
;~
Combine($aArray, $k + 1, $m)
;~
_ArraySwap($aArray[$k], $aArray[$i])
;~ ========以上是老版本函数调用方式===============
;~ ========以下是新版本函数调用方式===============

_ArraySwap($aArray, $k, $i)

Combine($aArray, $k + 1, $m)

_ArraySwap($aArray, $k, $i)

Next

EndIf
EndFunc   ;==>Combine

Func CombineNum($n = 0)

If $n > 1 Then

Return $n * CombineNum(($n - 1))

Else

Return $n

EndIf
EndFunc   ;==>CombineNum

afan 发表于 2016-4-25 18:30:39


haijie1223 发表于 2016-4-25 17:47 http://www.autoitx.com/images/common/back.gif


    有现成的_ArrayPermute()

weeew 发表于 2016-4-25 20:57:44

回复 6# haijie1223


   谢谢!

haijie1223 发表于 2016-4-25 22:53:50

回复 7# afan


    {:face (394):} 找块豆腐撞死得了

heroxianf 发表于 2016-4-26 05:30:21

回复 7# afan


    好东西啊!学习了。

weeew 发表于 2016-4-26 07:39:48

回复 9# haijie1223


    兄弟,能不能说下算法啊

131738 发表于 2016-4-26 11:18:38

本帖最后由 131738 于 2016-4-26 11:43 编辑


haijie1223 发表于 2016-4-25 17:47 http://www.autoitx.com/images/common/back.gif

看到这个截图,才想起你是在使用 ACN 版的, QQ 上回的 SciTE 配置工具对 ACN 无用
我目前使用的一个灰色背景



配置文件如下:#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# START: DO NOT CHANGE ANYTHING AFTER THIS LINE   #-#-#-#-#
# Standard SciTE4AutoIt3 Color scheme
#------------------------------------------------------------
font.base=font:Arial,size:10,$(font.override)
font.monospace=font:Courier New,size:14

#Color Settings
#Background
style.au3.32=style.*.32=$(font.base),back:#C0C0C0
#CaretLineBackground
caret.line.back=#DFDA00
# Brace highlight
style.au3.34=fore:#0000FF,back:#C0C0C0
# Brace incomplete highlight
style.au3.35=fore:#008000,back:#C0C0C0
# White space
style.au3.0=fore:#000000,back:#C0C0C0
# Comment line
style.au3.1=fore:#008000,back:#C0C0C0
# Comment block
style.au3.2=fore:#008000,back:#C0C0C0
# Number
style.au3.3=fore:#0000FF,back:#C0C0C0
# Function
style.au3.4=fore:#000090,back:#C0C0C0
# Keyword
style.au3.5=fore:#0000FF,back:#C0C0C0
# Macro
style.au3.6=fore:#808000,back:#C0C0C0
# String
style.au3.7=fore:#FF0000,back:#C0C0C0
# Operator
style.au3.8=fore:#FF8000,back:#C0C0C0
# Variable
style.au3.9=fore:#5A5A5A,back:#C0C0C0
# Send keys in string
style.au3.10=fore:#808080,back:#C0C0C0
# Pre-Processor
style.au3.11=fore:#808000,back:#C0C0C0
# Special
style.au3.12=fore:#DC143C,back:#C0C0C0
#Abbrev-Expand
style.au3.13=fore:#FF0000,back:#C0C0C0
# COM Objects
style.au3.14=fore:#993399,back:#C0C0C0
#Standard UDF's
style.au3.15=fore:#0080FF,back:#C0C0C0
#User UDF's
style.au3.16=fore:#0080FF,back:#C0C0C0
code.page=936
output.code.page=936
character.set=134
# END => DO NOT CHANGE ANYTHING BEFORE THIS LINE#-#-#-#-#-#
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
style.errorlist.32=back:#C0C0C0,font:Courier New,size:10
caret.fore=#FF0000
caret.width=3
horizontal.scroll.width.tracking=1
output.scroll=2
find.replace.advanced=1
backup.files=0
proper.case=0
error.inline=1
highlight.current.word=1
highlight.current.word.by.style=1
highlight.current.word.autoselectword=0
highlight.current.word.wholeword=0
highlight.current.word.matchcase=0
highlight.current.word.minlength=3
use.tabs=1
indent.size=4
indent.size.*.au3=4
tabsize=4
caret.line.back.alpha=256
selection.fore=#006000
selection.alpha=100
selection.back=#F0A0A8
style.error.1=fore:#FF0000,back:#FFFF00
style.error.2=fore:#FFFFFF,back:#FF0000
highlight.current.word.colour=#00D040
indicators.alpha=63
calltips.set.above=0
style.au3.38=fore:#050505,back:#FFFFFF
calltips.color.highlight=#FF0000
visible.policy.strict=1
visible.policy.lines=0
command.name.0.*=
command.0.beta=
command.name.19.*=
command.19.beta=
command.name.33.*=
command.33.beta=
openpath.$(au3)=$(SciteDefaultHome)\..\include;
如觉得可用, 在 SciTE 窗口 "选项" 菜单中打开" 用户配置文件 "
复制以上内容粘贴到打开的用户配置文件, 保存后即可.......

另外, 虫子也有一个黑背景的配置文件在 QQ 上..........

haijie1223 发表于 2016-4-26 18:59:30

回复 12# 131738


    多谢!手机上的,明天试试。

kk_lee69 发表于 2016-4-30 22:18:15

留個腳印 macgyver

dabaiyun 发表于 2016-5-1 12:54:19

回复 7# afan


    学习啦文档很重要
页: [1] 2
查看完整版本: 这几天一个关于排列组合的问题想不通,请各位指教