找回密码
 加入
搜索
楼主: sex123

[效率算法] 求一个排列组合算法的问题解决方案

  [复制链接]
 楼主| 发表于 2015-2-17 11:25:00 | 显示全部楼层
回复 15# netegg


    需要包括连续字母的检测 比如 aa bb cc
 楼主| 发表于 2015-2-17 11:26:16 | 显示全部楼层
回复  sex123
你把要的东西用结果表示出来,你的文字表达实在没法恭维
就你说的那个a l o s n,最后要的 ...
netegg 发表于 2015-2-17 02:40



    我再试着讲明白一点,不是由用户输入字母,而且由软件自动从a开始到z结束,自动枚举所有的可能。
 楼主| 发表于 2015-2-17 11:31:26 | 显示全部楼层
或者这么说 比如 一句话 I am a boy. You are a girl. How are you? Fine, thank you, and you?
本身软件不知道这一句话的内容,需要通过枚举的方法,从a到z一个一个试,找出所有的单词来,不要求句子中的单词所在的位置或者说顺序,也不要求大小写的区分,通过软件一个一个试,找出 i am a boy you are girl how fine thank 这些单词。我这回说明白了吗?
发表于 2015-2-17 17:20:38 | 显示全部楼层
本帖最后由 netegg 于 2015-2-17 17:21 编辑

stringsplit($str, ' ', 2)
剩下的用前面的方法对数组每个元素去匹配
发表于 2015-2-17 17:22:51 | 显示全部楼层
本帖最后由 netegg 于 2015-2-17 17:27 编辑

不对好像用不着
越说越糊涂了,到底是什么意思,要做翻译软件吗
另外我一直就没明白,什么叫每问一次,以词为单位,还是以字母为单位,比如问有没有'I ',回答什么
果然语言表达能力不够
 楼主| 发表于 2015-2-17 22:24:44 | 显示全部楼层
本帖最后由 sex123 于 2015-2-17 22:29 编辑
不对好像用不着
越说越糊涂了,到底是什么意思,要做翻译软件吗
另外我一直就没明白,什么叫每问一次,以 ...
netegg 发表于 2015-2-17 17:22



    晕,我的表达这么差吗。再举一个例子吧,比如这个论坛有搜索功能,用户可以搜索论坛的贴子,搜索有时间间隔,搜太快了,论坛不让,会让用户等待几十秒钟再搜,假如这个论坛可以全文搜索,而且我作为发贴人把贴子加密了,那么这个贴子的内容你是不知道了。比如我在加密的贴子中写下了我的银行账号和密码,加密内容如下 [BANKID jack29623 PASSWORD lekrorry9898],你是很想知道我的银行账号和密码,可是我加密了,你是不知道的,但是你可以通过论坛的搜索功能一个个的猜出来,就是枚举出来,明白了没?
发表于 2015-2-17 23:38:33 | 显示全部楼层
本帖最后由 netegg 于 2015-2-17 23:52 编辑

还是不明白,猜密码是单字组合后的所有可能性,和你这个有什么关系
比如六位密码,a-z,1-9我要算的是把所有排列都整出来一个个匹配就完了,和单个字母没关系
我没搞明白的是你是要最后出来整个字符串,还是一个字母组合,后者是按要素进行操作,前者是按整体进行操作
再说的简单点,前者如果有八位字符,我不用管到底是什么,只要在36个字符中取8个字符组合起来比对就完了,算36^8(2821109907456)次肯定有对上的
如果是后者,如果中间出现错误就退出,我要算的是8^36(3.2451855365842672678315602057626e+32)次
发表于 2015-2-18 04:55:12 | 显示全部楼层
按你的那个例子 [BANKID jack29623 PASSWORD lekrorry9898],你想知道什么,估计基本什么都不会知道
发表于 2015-2-18 06:24:14 | 显示全部楼层
[au3]#include<array.au3>
Local $str = 'lekrorryabcd', $i = 110, $ret='', $j= 0
Local $aA[1] = ['']
For $i= 97 To 122
        _arrayadd($aA, Chr($i))
Next
$aStr = StringSplit($str, '', 2)
For $i In $aStr
        $ret &= $aA[_arraysearch($aA, $i)]
Next
MsgBox(0,0,$ret)
[/au3]
不知道是不是这意思
 楼主| 发表于 2015-2-18 12:59:22 | 显示全部楼层
不知道是不是这意思
netegg 发表于 2015-2-18 06:24



    我郁闷,我的语文是阿拉伯国家的体育老师教的。就是通过论坛的搜索功能算出所有的字符串,怎么就不明白呢。
发表于 2015-2-18 13:05:57 | 显示全部楼层
你还是直接说步骤吧,我确实越来越糊涂
发表于 2015-2-18 13:07:22 | 显示全部楼层
首先你的已知条件是什么
发表于 2015-2-18 13:17:02 | 显示全部楼层
本帖最后由 netegg 于 2015-2-18 13:18 编辑

如你所说只是猜密码,我为什么要瞎猜,有a的话,猜有没有a~z的aa~az的组合,如果有一个符合,猜有没有aaa~azz的组合,类推,26个字母都从头走一遍就完了,为什么要猜组合,无形放大了选择范围
发表于 2015-2-18 13:31:13 | 显示全部楼层
本帖最后由 netegg 于 2015-2-18 13:42 编辑

假如这种情况,我先猜有没有a,有则猜aa~az(必有一个)(直到如果a*****后面跟什么都没有,表示a*****是最后的字母串),然后a*a~a*z(*是前一步的返回值)(26次),根据字符串长度,先确定那个中间的字母是什么,然后往后取,取够了,往前取,同理了,猜东西似乎必须要有个基本起始点,不是瞎猜的,随便整出一个就猜了
发表于 2015-2-20 13:26:59 | 显示全部楼层

Dim $MAIN_str = "saloon"
If _isok($MAIN_str, "on") Then
        MsgBox(0, "提示", "是")
Else
        MsgBox(0, "提示", "不是")
EndIf
Func _isok($str = "", $checkstr = "")
        StringReplace($str, $checkstr, "")
        If Int(@extended) > 0 Then
                Return True
        Else
                Return False
        EndIf
EndFunc   ;==>_isok
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 17:06 , Processed in 0.068162 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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