小W写脚本的之2B与牛B的区别

本文详细介绍了如何通过全状态枚举解决自动化脚本中的复杂问题,从简单的方法逐步深入到更高效、更具扩展性的解决方案。通过案例分析,展示了从直接全排列到状态压缩的代码优化过程,最终实现代码的简洁性和高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

头:小W我要写一个自动化脚本来模拟发送网络请求,其中网络请求中有下面几个因子,你给我用全排列的方式生成吧~

(示例)

hid md5 64位/32位
123 abc 32
456 cde 64



小W:没问题,分分钟搞定。


....一个小时过去了


小W:头,头,我写好了~


头:嗯,不错,效率蛮高吗,拿给我看看


小W:

(下面是小W的代码)


头:哥屋恩~

...十分钟后

头:小W啊,不是我说你啊,你这代码,产品那边改个策略,加个因子,你就要改次代码,是不是很麻烦啊。写代码要注意扩展性,要注意...

...半小时后,小W幡然醒悟,决定重新做人

...经过多天的博览群书

小W:头,头,我找到了新做法了,很高大上的~

(下面是小W洗心革面之后的代码)

高(hen)大(chang)上(jian)的递归解法,所有因子以及对应的情况维护在一个文档,函数自己去文档按顺序读出所有因子。第一次在第一个数组去一个因子,递归调用去第二个数组取因子,直到取到最后一个数组,这时候就是一条完整的Case。然后每个数组遍历取元素,就可以得到所有路径了。

头:很赞(bai)许(yan)地看了小W一眼,不错,比上次好多了,至少不用随着策略修改去改脚本代码了,有一定的扩展性~

小W:嘿嘿(傻笑)

头:不过嘛,递归也有不好的地方,比如说容易爆栈什么的 ...

小W:傻眼...

...过了不知多少天,小W仍然在默默奋斗

...在一个偶然的机会,小W听说了状态压缩这个名词

小W:头,头,这次真有牛B做法了

头:白眼~

(下面是小W认为比较牛B代码)

其实这里就是一个全状态的枚举,我们用一位数记录一个因子的状态,最后将这些数合起来,从小到大枚举,得到的就是全状态。


示例:对于上面个例子,由于每个因子只有两种状态,我们就可以用个二进制数来表示,那么合起来后就是一个三位的二进制数,最小值为0,最大值为7,我们从0枚举到7,就可以得到全状态。


头:恩,这次算你还比较认真,终于能有个较新颖的解法(这孩子总算还有救)



原文链接

如需转载该篇文章,请注明来自“搜狗测试”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值