汗~~~
按软件!
不明白,按条目的话,完全不理按软件来计算,那~~怎么在软件上运行.
我以为兄台可以计算到1000条里,每条用到的时间(s), 我理解错误.
XXCP 发表于 2009-10-1 19:23 http://www.autoitx.com/images/common/back.gif
软件条目总数1000?
软件条目总数1000?
netegg 发表于 2009-10-1 20:40 http://www.autoitx.com/images/common/back.gif
是1000啊,顶数上我没写错 #cs ----------------------------------------------------------------------------
有1000个条目,
每个条目的内容检索时间为t1毫秒;每检索t2个条目,暂停检索t3毫秒;
软件每运行t4毫秒,暂停运行t5毫秒后继续运行.问:1000个条目,需要多长时间(秒)能检索完.
#ce ----------------------------------------------------------------------------
Global $tHowLong,$tUsed,$iItems
;$tHowLong 临时经过时间
;$tUsed 所用的时间毫秒
;$iItems 条目数量
Global $t1,$t2,$t3,$t4,$t5
$t0="题目作者"
;$t1t2t3t4t5 $t0出的变量,一般人不能理解
Dim $i
;$i 临时循环变量
sinit() ;初始化
For $i=1 to $iItems;循环$iItems次数来计算
IndexItems() ;内容检索
If Mod($i,2)=0 Then
lfPause($t3,1) ;每检索t2个条目,暂停检索t3毫秒;
EndIf
Next
MsgBox(0,$iItems&"条计算时间为",$tUsed / 1000) ;得到秒以和题目的问题相同单位
Func sInit($Fuckingt1t2t3t4t6="这种变量名就像在大便里挑黄豆")
;初始化所有变量
$tUsed=0
$tHowLong=0
$iItems=1000
$t1=1
$t2=2
$t3=3
$t4=4
$t5=5
EndFunc
Func lfPause($iTime,$AddLong);暂停
;题目上的暂停运行是否计算时间
;如果要计算时间那么$t4<$t5的话,软件永远处于暂停状态
;所以我只能理解为不计算
If $AddLong=1 Then
$tHowLong=$tHowLong+$iTime
EndIf
$tUsed=$tUsed+$iTime
EndFunc
Func IndexItems()
$tHowLong=$tHowLong+$t1
;软件每运行t4毫秒,暂停运行t5毫秒后继续运行
If $tHowLong / $t4 >0 Then ;如果软件运行时间大于$t4则增加计算时间
lfPause(Int($tHowLong / $t4)*$t5,0)
$tHowLong=Mod($tHowLong,$t4);重置软件运行时间计数变量
EndIf
$tUsed=$tUsed+$t1
EndFunc 这种变态的题目,花我1个多小时 没显示出来.
t3触发时,只会使t2,t1处于暂停计数状态,t4,t5仍然正常计数(有可能在T4秒数以内,t1,t2,t3N个循环可以完成,而不触发T5)
t4<t5不会使软件本身永远处于暂停.
t5触发时,会使t4,t3,t2,t1停止计数,但t5本身是计数状态;
有点郁闷..虽然没法交差,但仍然想把这题解出来.. 用akmm88 兄的方法套了一下:
$iItems=5
$t1=1
$t2=2
$t3=2
$t4=3
$t5=3
结果输出:$tUsed=18
我这样套的.
每条用1秒
每检索2条,暂检索2毫秒
每运行3毫秒,暂停运行3毫秒.
1{第1条}+(1+1+3+1){第2条}+1{第3条}+(1+1+3+1){第四条}+1{第五条}
去掉{},1+(1+1+3+1)+1+(1+1+3+1)+1=15毫秒.
--------------------------
1{第1条}+(1+1+3+1){第2条}+1{第3条}+(1+1+3+1){第四条}+1{第五条}
计数(1+1+3+1){第2条}时,触发t3,而T3只计数了1毫秒时,触发t4,等t5结束后还要等1毫秒(T3在T5触发前未完的计数),这是检索第2条时用的时间.
........
这样算下来,却只用了15.
和akmm88 兄提供的计数差3
不解.那3出在哪儿? 用akmm88 兄的方法套了一下:
$iItems=5
$t1=1
$t2=2
$t3=2
$t4=3
$t5=3
结果输出:$tUsed=18
我这样套的.
每条用1秒
每检索2条,暂检索2毫秒
每运 ...
XXCP 发表于 2009-10-8 22:54 http://www.autoitx.com/images/common/back.gif
共5条 检索2条 共 2毫秒 又要暂停2毫秒,此时软件运行了4毫秒了>t4,需要暂停t5,也就是3毫秒,
到现在已经7毫秒了,继续,检索2条 共 2毫秒 又要暂停2毫秒,此时软件运行5秒,没暂停,得暂停3毫秒,余2毫秒,最后1条检索用1毫秒,软件运行又另1个3秒,需要暂停3秒. 刚好18毫秒. 你说的多出3毫秒,就是 最后1个T4是否要是软件暂停,如果不用暂停的话
If $tHowLong / $t4 >0 Then ;如果软件运行时间大于$t4则增加计算时间
lfPause(Int($tHowLong / $t4)*$t5,0)
$tHowLong=Mod($tHowLong,$t4);重置软件运行时间计数变量
EndIf
在这个lfPause前加个判断$i是否=$iItems 需要把$i设置为全局变量.按题目来看,是需要暂停的,因为软件暂停将是答案无法提交,属于异步的,所以我觉得最后一个暂停是需要的.
t5触发时,会使t4,t3,t2,t1停止计数,但t5本身是计数状态;
t4
XXCP 发表于 2009-10-8 21:22 http://www.autoitx.com/images/common/back.gif
题目上可没说T5会使T4停止计数啊,当然逻辑上是必须停止计数的. ......同学 好久没出现了嘛 感谢akmm88憾慨解答.
按akmm88的法子去做T4与T5判断.
多谢各位朋友的帮忙. 学习了!感谢!
页:
1
[2]