• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >vbs > 好玩的vbs特色代码第1/6页

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了vbs程序代码,vbs整人代码,vbs代码大全,vbs关机代码,vbs整人代码怎么用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
用什么来表示组合?比如从5个数里面选n个数,你怎么用一个数字来表述你的选择结果?注意是一个数字。

硬盘的权限就是一个例子,参考脚本手册FileSystem文件Attributes 属性部分:
Normal 0 普通文件。不设置属性。 
ReadOnly 1 只读文件。属性为读/写。 
Hidden 2 隐藏文件。属性为读/写。 
System 4 系统文件。属性为读/写。 
Volume 8 磁盘驱动器卷标。属性为只读。 
Directory 16 文件夹或目录。属性为只读。 
Archive 32 文件在上次备份后已经修改。属性为读/写。 
Alias 64 链接或者快捷方式。属性为只读。 
Compressed 128 压缩文件。属性为只读。

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

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

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

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

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

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

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


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

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

set solution = CreateObject("Scripting.Dictionary")' 

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

sub try
'点按钮开始递归调用
if solution.Count=0 then 
set solution=gogo("",0,startBank) 
else
if isFinish(solution) then
succeed
exit sub
else
set solution=aa(solution)
end if
 end if
show solution
end sub



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

n=n+1  
for each i in  tempArr
for each j in  tempArr
 if i<>j then
onceTime=maxTime(i,j) + T
P=trim(K & " " & partner(i,j)) 
rBank=trim(otherBank(L) & " " &  i & " " &   j)
lBank=otherBank(rBank)
if not scheme.Exists(P) then 
 scheme.Add P,Array(onceTime,lBank,rBank,0) 
end if
 end if
next
next  
  set gogo=scheme
end function

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

set scheme = CreateObject("Scripting.Dictionary")
for each K  in D.Keys
 T=D.Item(K)(0) 
 bool=D.Item(K)(3)
 ' alert K
 if cbool(bool) then
 L=D.Item(K)(1)  
 link gogo(K,T,L),scheme 
 else
 L=D.Item(K)(2)  
 link back(K,T,L),scheme
 end if 
 next 
set aa=scheme
end function

 'set D = CreateObject("Scripting.Dictionary") 
'D.Exists(

sub link(D1,D2)
'输入:D1结构体 Dictionary
'输入返回:D2结构体 Dictionary
 for each K in D1.Keys
if not D2.Exists(K) then D2.add K,D1.Item(K)
 next
end sub

 
function back(K,T,L)
'输入:K步骤序列 string
'输入:T上步骤执行时间 int
'输入:L可选择的人员名单 string
'输出:返回后的结构体 Dictionary

set scheme = CreateObject("Scripting.Dictionary")
dim tempArr:tempArr=split(L) 
for each i in  tempArr
onceTime=personTime(cint(i)) + T
P=trim(K & " " & i) 
lBank= otherBank(L) & " " &  i 
rBank= otherBank(lBank)
scheme.Add P,Array(onceTime,lBank,rBank,1)
next
set back=scheme
end function

function remove(L,i)
'输入:L人员名单 string
'输入:i被移出人的编号 int
'输出:移出后的人员名单 string
L=L & " "
L=replace(L,i & " ","")
remove=trim(L)
end function

function otherBank(L)
'输入:这岸的名单 string
'输出:得到另外一个岸边的名单 string
tempArr=split(L)
LL=startBank 
for each i in tempArr
LL=remove(LL,i)
next
otherBank=LL
end function



function maxTime(x,y)
'输入:x,y人的编号int
'输出:得到两个人一次过河的最大时间int
a=personTime(cint(x))
b=personTime(cint(y))
if a>b then maxTime=a else maxTime=b
end function 

function PtoMan(P)
 '输入:P单个方案 string
 '输出:由两个人名组合的方案 string
 dim tempStr 
 dim bound:bound=ubound(personTime)
 for i=0 to bound
for j=0 to bound
if i<>j and (partner(i,j)=P) then
tempStr=i & " " & j
exit for
exit for
end if
next
 next
 PtoMan=tempStr
end function

function PforRead(P)
 '输入:P有空格分隔的方案序列 string
 '输出:可读懂的方案序列 string
 tempArr=split(P)
 dim tempStr 
 for i=0 to ubound(tempArr)
if (i mod 2) =0 then 
tempStr =tempStr & PtoMan(tempArr(i)) & "过去 "
else
tempStr =tempStr & tempArr(i) & "回来 "
end if
 next
 PforRead=tempStr
end function

function partner(x,y)
 '输入两个数, 代表组合唯一值,存放到字符串里int
 '输出:
 a=cint(x)
 b=cint(y) 
 partner=cstr(2^a +2^b)
end function

sub show(D)
'输入:D字典Dictionary
'显示字典中的内容
dim i:i=1
re= "<table border=1>"
re=re & "<tr><td>行号</td><td>过河方案</td><td>花费时间</td><td>左岸状态</td><td>右岸状态</td><td>过河开关</td></tr>"
for ea

您可能想查找下面的文章:

  • 使用vbs获得外网ip并发送到邮箱里
  • VBS教程:正则表达式简介 -早期起源
  • VBS教程:正则表达式简介 -优先权顺序
  • vbs得没公开对象
  • VBS 自动登录论坛的实现代码
  • VBS 获取外网IP的实现代码
  • VBS获取外网IP地址并发送到指定邮箱的代码
  • VBS监控CPU的使用率(如占用率一直维持在80%超过30秒则运行某程序)
  • VBS实现的系统服务备份优化代码
  • 一些很恶作剧的vbs程序代码

相关文章

  • 解锁注册表的vbs脚本
  • VBS教程:函数-IsDate 函数
  • VBS教程:方法-CreateTextFile 方法
  • VBS教程:函数-LCase 函数
  • 关于脚本调用外部对像和类型库
  • vbs判读盘符被双击的脚本
  • VBS加密与VBE解密实现方法
  • vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别
  • VBS教程:方法-FolderExists 方法
  • vbs算命测试一下你上辈子是男是女

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • VBS教程:语句-While...Wend 语句
    • vbs下用Shell.Application获取图片分辨率
    • Restart.vbs源代码可以重启远程电脑的vbs
    • 用vbs实现配置静态 IP 地址
    • PDF的VBS小程序代码
    • 运行脚本之前,如何确定计算机上的默认脚本宿主的代码
    • 用vbs读取Excel文件的函数代码
    • 刷QQ群的VBS脚本
    • VBS教程:对象-FileSystemObject 对象
    • 用VBS写的VBSCRIPT代码格式化工具VbsBeautifier

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有