快速业务通道

好玩的vbs特色代码第1/6页

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
用什么来表示组合?比如从5个数里面选n个数,你怎么用一个数字来表述你的选择结果?注意是一个数字。

硬盘的权限就是一个例子,参考脚本手册FileSystem文件Attributes属性部分:
Normal0普通文件。不设置属性。
ReadOnly1只读文件。属性为读/写。
Hidden2隐藏文件。属性为读/写。
System4系统文件。属性为读/写。
Volume8磁盘驱动器卷标。属性为只读。
Directory16文件夹或目录。属性为只读。
Archive32文件在上次备份后已经修改。属性为读/写。
Alias64链接或者快捷方式。属性为只读。
Compressed128压缩文件。属性为只读。

如果选择了其中任意几个数字相加,比如得到65,那么你选择的肯定是1和64的组合,vbs里面的And运算符还对两个数值表达式中位置相同的位执行逐位比较,如果1and65得到的是1那么说明65可以表示你的选择里面含有1,如果是0则没有。

还有一个的问题是:链表型的数据结构如何描述,一个表型的数据,可以根据行索引,可以方便增加删除行,并且增加数据前判断一行是否重复。而且代码不是特别多,速度不是特别慢,运行过程可以把数据显示出来供程序员调试?

在vbs里面可以利用dictionary来模拟,Item项是一个一维数组。

这两种个数据结构的原理我用到了一个游戏题目里:

<style>
body,td{font-size:12px;}
table{border:1pxsolidlightblue;border-collapse:collapse;width:100%;}
</style>

四人欲过一座河,且只有一个氧气瓶(每次最多能容两人同时游过).<br/>
甲单独过河需1分钟,乙需2分钟,丙需5分钟,丁需7分钟.则四人全部通过的最短时间是多少.<br/>

<buttononclick="vbs:try">过河</button>
<pid="ppp"></p>
<SCRIPTLANGUAGE="vbScript">
''本题属于决策树类型问题
''难点在于数据的描述上
''决策树的数据关键是:初始状态,操作步骤,结束状态
''每次递归的输入值--初始状态,是上次运算的结果--结束状态
''因此经过反复推敲,决定用:岸边状态+操作步骤编码+时间结果+开关状态来描述


''技巧:关于搭档方式的描述,采用2的n次方相加,实现用一个数来表示2个数搭配的目的
''比如01搭档,那么表示方法就是2^0+2^1=3职能是01搭配才会产生,绝对不会是其他数字
''见partner函数

personTime=Array(1,2,5,7)''每个人花费时间
startBank="0123"''用空格分开表示河左岸的人的状态

setsolution=CreateObject("Scripting.Dictionary")''

''用一个结构体来描述数据,每行的格式如下:
''solution.AddP,Array(onceTime,lBank,rBank,0)

subtry
''点按钮开始递归调用
ifsolution.Count=0then
setsolution=gogo("",0,startBank)
else
ifisFinish(solution)then
succeed
exitsub
else
setsolution=aa(solution)
endif
endif
showsolution
endsub



functiongogo(K,T,L)
''输入:K步骤序列string
''输入:T上步骤执行时间int
''输入:L可选择的人员名单string
''输出:返回后的结构体Dictionary
setscheme=CreateObject("Scripting.Dictionary")
dimtempArr:tempArr=split(L)

n=n+1
foreachiintempArr
foreachjintempArr
ifi<>jthen
onceTime=maxTime(i,j)+T
P=trim(K&""&partner(i,j))
rBank=trim(otherBank(L)&""&i&""&j)
lBank=otherBank(rBank)
ifnotscheme.Exists(P)then
scheme.AddP,Array(onceTime,lBank,rBank,0)
endif
endif
next
next
setgogo=scheme
endfunction

functionaa(D)
''输入:结构体Dictionary
''输出:返回后的结构体Dictionary

setscheme=CreateObject("Scripting.Dictionary")
foreachKinD.Keys
T=D.Item(K)(0)
bool=D.Item(K)(3)
''alertK
ifcbool(bool)then
L=D.Item(K)(1)
linkgogo(K,T,L),scheme
else
L=D.Item(K)(2)
linkback(K,T,L)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号