Dirty rooms

来源: deal_or_no_deal 2009-05-10 19:24:30 [] [旧帖] [给我悄悄话] 本文已被阅读: 次 (918 bytes)
int N; // total rooms
volatile Room rooms[1..N]
int nextDirtyRoomNumber = 1
int nextDirtyRoomNumbers[1..N]

foreach i in [1..N]:
nextDirtyRoomNumbers[i] = i + 1

while true:
sleep 1 minute
nextDirtyRoomNumber = checkRooms(nextDirtyRoomNumber)
if nextDirtyRoomNumber == N
break
i = nextDirtyRoomNumber
dirty_room_number = []
do
dirty_room_number.append(i)
i = nextDirtyRoomNumbers[i]
while i < N
send dirty_room_number
send 'all clean'

function checkRoomsReturnNextDirtyRoomNumber(startNumber):
if startNumber == N:
return N
nextRoomToCheck = nextDirtyRoomNumbers[startNumber]
if rooms[startNumber].dirty:
nextDirtyRoomNumbers[startNumber] = checkRoomsReturnNextDirtyRoomNumber(nextRoomToCheck)
return startNumber
return checkRoomsReturnNextDirtyRoomNumber[nextRoomToCheck)

所有跟帖: 

哈哈,以为是骂人呢。 -贫论元- 给 贫论元 发送悄悄话 (0 bytes) () 05/11/2009 postreply 06:10:33

请您先登陆,再发跟帖!

发现Adblock插件

如要继续浏览
请支持本站 请务必在本站关闭/移除任何Adblock

关闭Adblock后 请点击

请参考如何关闭Adblock/Adblock plus

安装Adblock plus用户请点击浏览器图标
选择“Disable on www.wenxuecity.com”

安装Adblock用户请点击图标
选择“don't run on pages on this domain”