中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 19:43
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]排列组合
可打印版本  6,461 / 36
第16楼 bat-zw 发表于 2008-06-29 19:18
金牌会员 发帖 1,276 积分 3,105
脑袋想破了,还只能用替归法来算,以下代码在理论上适合10位内的排列,但不知怎么到了9位就出问题,郁闷啊:


[ Last edited by zw19750516 on 2008-6-29 at 07:28 PM ]
第17楼 plp626 发表于 2008-06-29 21:29
银牌会员 发帖 1,020 积分 2,278
用递归 我想核心的代码不会超过3行可以搞定,谁来挑战下?
zw兄:
你这个代码生成了临时文件,也不叫递归,你的代码可以归为“另类”
第18楼 moniuming 发表于 2008-06-29 21:34
银牌会员 发帖 574 积分 1,335 来自 广西
太多了麻烦,最主要是实现了就行了,想要排列更多的话,以此类推...
第19楼 pusofalse 发表于 2008-06-29 21:35
银牌会员 发帖 646 积分 1,604
我想这道题如果攻透了 会有很大用处的。。。
第20楼 HAT 发表于 2008-06-30 00:18
版主 发帖 5,017 积分 9,023
什么用处?生成暴力破解用的密码字典?
第21楼 pusofalse 发表于 2008-06-30 01:05
银牌会员 发帖 646 积分 1,604
不只是暴力破解。。。总之就是与解码有关了。。。
第22楼 moniuming 发表于 2008-06-30 14:59
银牌会员 发帖 574 积分 1,335 来自 广西
如果是猜测密码的话,把18楼的代码改成以下的也许更合适些吧
第23楼 WANKOILZ 发表于 2008-06-30 17:40
初级用户 发帖 89 积分 198 来自 重庆
我用“插入法”,发现效率还不错,代码也简短:
第24楼 moniuming 发表于 2008-06-30 18:51
银牌会员 发帖 574 积分 1,335 来自 广西
回23楼
经测试当输入7个数的时候,23楼的代码花费了三十几秒,而22楼的只用了几秒,试试??
要上班了,明天再来看结果,哈哈
第25楼 WANKOILZ 发表于 2008-06-30 20:41
初级用户 发帖 89 积分 198 来自 重庆
肯定,call得太多自然效率低,我的关键是不限制字符数目。
第26楼 clian76 发表于 2008-12-01 16:31
中级用户 发帖 162 积分 363
如果给出的字符有重复就出错了!如:abbcd 又如:12321
可以修改去掉这个BUG吗
第27楼 523066680 发表于 2008-12-17 17:19
银牌会员 发帖 1,133 积分 2,362
文、代码:523066680
blog: http://hi.baidu.com/523066680
发表于:http://www.cn-dos.net/forum/viewthread.php?tid=41243&fpage=1&highlight=&page=2 27楼

先贴代码



我来了,黑板报出完了,心情无比放松,看中这道题,"研究"了几天,有点结果了,分享下.
主要内容 1.谈谈前面楼的代码
2.分享我在解题过程中学到的东西
首先谈谈楼上的内容
以 plp626 提出的多重for最为快速,虽然只能对指定数量的字符,但是可以修改啊,
22楼修改的不错,我觉得能到10个字符就可以满足需求了,尤其是速度就像直接type答案一样快.
但是作为一个学者,寻求更好的办法是有必要的.于是23楼的代码超短(Good!),且符合要求
虽然没来得及理解,暂时发现的问题是:
当我输入6个字符时,结束的时候按Enter居然不退出,估计
可能死循环了.又看了下,汗,请大家测试的时候在pause>nul后面加exit
另外,输入字符数多运行时间长是很自然的事情,我觉得不用挑这个毛病.

本人认为23楼代码很短,精悍,值得学习下的.

下面先说说本人解题过程学到的东西:
[主要是想要讨论call 的参数递归,关于这道题 ,上次看到batman 有快速的解法,
我就不转载了 期待 batman 大哥 续帖
]

1.也想对plp626代码改进,玩了一下用%var% 代表 一条命令执行的方法,下面给出理解版:


感觉太好玩了,不够"自动化"对吧?ok 我们用for 来决定要用几重for ,曾试着重组那个多重For的思路,
不过变量跟符号太多了,实在搞不下去,停工,思路别浪费,做别的. 用这个思路实现:
根据用户输入的符号,列出这些符号包括本身的所有组合
这是个简单点的题目,例如输入 1 2 则输出 1 1 , 1 2 , 2 1 , 2 2 好处主要是允许输入字符数不定.
虽然不了解"密码字典",不过感觉上要做的话这个代码应该更适合(比如说密码是223456的时候).
代码如下:



2.call 参数 回归
实现这个,我觉得可能Call可以实现,记得call
返回的时候,接下来的东西都是原来的,会不会参数也是原来的?



所以,不能期待set 的变量也能有"重叠的记忆功能" ,要么加上编号,但会很繁杂的.

-----------------以下内容谈论call 参数
废话说多了,开始探究call有多强大(call 参数返回 理解版):


还算好理解吧? 来个多层的,玩转call:


越玩越有趣啊, 自己那个代码就不打算详细分析了,写这篇文章不是晕大家的,所以我也主要用中文描述,讲一些可能用的上的东西.

温馨提示:很多问题阻碍了我很久,而我最后一次理清所有思路,是在关上电脑的时候,可见:经常对着电脑不利于思考啊.
----------------末
本人知识及能力实在有限,感觉这样分层的call并分层的返回 应该就是前面楼说的 "递归" 了吧
希望有资料的人把相关资料分享下哈. 现在感觉像是进入了完全不知道的逻辑领域....

[ Last edited by 523066680 on 2008-12-19 at 10:41 ]
第28楼 523066680 发表于 2008-12-18 10:36
银牌会员 发帖 1,133 积分 2,362
我写的这么辛苦 到网吧发表还得花钱,怎能不顶起来?

要是没人鸟 我以后也懒得写了....

[ Last edited by 523066680 on 2008-12-18 at 11:06 ]
第29楼 wxcute 发表于 2008-12-18 11:51
中级用户 发帖 211 积分 458
有些时候还是留给人自由思考的空间好。思路仅作为讨论用,而且是写得越简单越好,如果写得过于详细,容易造成思维定势。

一点建议,请勿见怪。
第30楼 523066680 发表于 2008-12-19 10:24
银牌会员 发帖 1,133 积分 2,362
说的很好 有道理 , 我决定把 文章改下
只讨论我过程中学到的批处理技术
上一页  1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023