kun667 发表于 2009-1-9 09:21:50

全排列

全排列的autoit语句该怎样写呢?比如26个字母进行全排列

UID 发表于 2009-1-9 15:16:38

你非得在这里提问吗

kun667 发表于 2009-1-12 17:37:20

回复 2# UID 的帖子

这位大哥 那你能告诉我去哪提问呀

sxd 发表于 2009-1-12 20:05:47

汗 搞脑子了我不愿意牺牲自己的脑细胞

[ 本帖最后由 sxd 于 2009-1-12 20:21 编辑 ]

xinda 发表于 2009-1-13 18:22:37

$text = ""
For $i = 65 to 90
    $text = $text & Chr($i)
Next
MsgBox(0, "大写字母表", $text)

[ 本帖最后由 xinda 于 2009-1-13 18:26 编辑 ]

xinda 发表于 2009-1-13 18:24:36

大写65-90   小写97-122

sxd 发表于 2009-1-13 21:18:18

估计楼上的不了解 啥叫全排列

pcbar 发表于 2009-1-14 09:59:28

楼主也太抬举au3了,26个字母共有403,291,461,126,605,635,584,000,000种不同的组合
用au3得运算好几天吧
以下代码仅供参考
#include "array.au3"

Global $k = 5;数组的大小,即有$K个数参与排列
Global $a[$k], $t[$k]; 定义数组
For $j = 0 To $k - 1
        $a[$j] = $j + 1
Next
;_ArrayDisplay($a)
alllist($a)

Func alllist($array)
        Local $b, $n = UBound($array)
        If Not IsArray($array) Then Return
        If $n = 1 Then
                $t[$k - $n] = $array
                out();输出结果
                Return
        EndIf
        For $i = 0 To $n - 1
                $t[$k - $n] = $array[$i]
                alllist(mad($array, $i))
        Next
EndFunc   ;==>alllist

Func mad($ary, $index)
        _ArrayDelete($ary, $index)
        Return $ary
EndFunc   ;==>mad

Func out()
        ConsoleWrite(_ArrayToString($t, '') & @CRLF)
EndFunc   ;==>out

akmm88 发表于 2009-1-14 11:25:56

原帖由 pcbar 于 2009-1-14 09:59 发表 http://www.autoitx.com/images/common/back.gif
楼主也太抬举au3了,26个字母共有403,291,461,126,605,635,584,000,000种不同的组合
用au3得运算好几天吧


我不知道楼主说的,排列是不是排序。不够这位仁兄说的太离谱了吧,26个字母算好几天?
想学编程,数据结构和算法,都是必修课啊。

下面演示个,冒泡排序,当然还有很多种算法(如快速排序)。
代码里有注释,就不多说了。
Global $str=["z","g","e","x","h","a","c","w","r","y","u","i","p"]
sort()
For $l=0 To UBound($str)-1
        ConsoleWrite($str[$l])
Next
ConsoleWrite(@crlf)

Func sort();冒泡排序
        Local $count,$tmp
        $count=UBound($str)
        If $count<=1 Then
                Return($str)
        EndIf
       
        For $i=0 To $count-1
                For $j=0 To $count-$i-2
                        If $str[$j]>$str[$j+1] Then ;把>改成 < 变成降序
                                ;交换
                                $tmp=$str[$j]
                                $str[$j]=$str[$j+1]
                                $str[$j+1]=$tmp
                        EndIf
                       
                Next
               
        Next
       
EndFunc

sxd 发表于 2009-1-14 13:30:08

全排列,比如字母ABC,所有排列有A,AB,AC,ABC,ACB,B,BA,BC,BAC,BCA,C,CA,CB,CAB,CBA.

26个字母的全排列 .....很恐怖的

sanhen 发表于 2009-1-14 21:56:52

了解一下。26个字母的全排列,应该是26!,想了下的确够恐怖的。

kun667 发表于 2009-1-16 10:19:29

谢谢各位的回答谢谢照顾 呵呵

wolfxiong 发表于 2009-1-16 14:52:37

你还没有对于的标题是啥意思做出解释呢!

sxd 发表于 2009-1-16 22:38:24

原帖由 wolfxiong 于 2009-1-16 14:52 发表 http://www.autoitx.com/images/common/back.gif
你还没有对于的标题是啥意思做出解释呢!
请看10楼
页: [1]
查看完整版本: 全排列