找回密码
 加入
搜索
查看: 2184|回复: 13

全排列

[复制链接]
发表于 2009-1-9 09:21:50 | 显示全部楼层 |阅读模式
全排列的autoit语句该怎样写呢?比如26个字母进行全排列
发表于 2009-1-9 15:16:38 | 显示全部楼层
你非得在这里提问吗
 楼主| 发表于 2009-1-12 17:37:20 | 显示全部楼层

回复 2# UID 的帖子

这位大哥 那你能告诉我去哪提问呀
发表于 2009-1-12 20:05:47 | 显示全部楼层
汗 搞脑子了  我不愿意牺牲自己的脑细胞

[ 本帖最后由 sxd 于 2009-1-12 20:21 编辑 ]
发表于 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 编辑 ]
发表于 2009-1-13 18:24:36 | 显示全部楼层
大写65-90     小写97-122
发表于 2009-1-13 21:18:18 | 显示全部楼层
估计楼上的不了解 啥叫  全排列
发表于 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[0]
                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
发表于 2009-1-14 11:25:56 | 显示全部楼层
原帖由 pcbar 于 2009-1-14 09:59 发表
楼主也太抬举au3了,26个字母共有403,291,461,126,605,635,584,000,000种不同的组合
用au3得运算好几天吧


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

下面演示个,冒泡排序,当然还有很多种算法(如快速排序)。
代码里有注释,就不多说了。
[au3]Global $str[13]=["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
[/au3]
发表于 2009-1-14 13:30:08 | 显示全部楼层
全排列,比如字母ABC,所有排列有A,AB,AC,ABC,ACB,B,BA,BC,BAC,BCA,C,CA,CB,CAB,CBA.

26个字母的全排列 .....很恐怖的
发表于 2009-1-14 21:56:52 | 显示全部楼层
了解一下。26个字母的全排列,应该是26!,想了下的确够恐怖的。
 楼主| 发表于 2009-1-16 10:19:29 | 显示全部楼层
谢谢各位的回答  谢谢照顾 呵呵
发表于 2009-1-16 14:52:37 | 显示全部楼层
你还没有对于的标题是啥意思做出解释呢!
发表于 2009-1-16 22:38:24 | 显示全部楼层
原帖由 wolfxiong 于 2009-1-16 14:52 发表
你还没有对于的标题是啥意思做出解释呢!

请看10楼
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-23 09:28 , Processed in 0.100001 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表