作者tpjobp (月之殇)
看板Visual_Basic
标题Re: 连锁染色
时间Mon May 22 09:15:30 2006
※ 引述《fantasywater (狂想)》之铭言:
: 如果白色的0碰到黄色的0 白色的0会变成黄色
: 0 0
: 00000000 → 00000000 → 00000000
:
: 这样只要判断一个话很好用程式表达
: 0000 0000 0000 0000 0000
: 00 0 00 0 00 0 00 0 00 0
: → 0 → 0 → 0 → 0
: 00000000 00000000 00000000 00000000 00000000
:
: 如果是这种情况,那我在将第一个变色之後,要怎麽用程式表达连锁的情形,
: 如果不用递回也不用到资料结构,只单纯的用条件式和回圈描述,那条件应该
: 要怎麽写才能够才能够表达这种关系,想了很久,但是分枝一多之後就想不下
: 去了
:
应该只要给你演算就好了吧....
Do
ExitFlag=True
For i = 1 to 所有色点的总数
if 色点(i)=黄色 then
if 上方有白点 then 白点变黄 :ExitFlag=False
if 右上方有白点 then 白点变黄 :ExitFlag=False
if 右方有白点 then 白点变黄 :ExitFlag=False
if 右下方有白点 then 白点变黄 :ExitFlag=False
if 下方有白点 then 白点变黄 :ExitFlag=False
if 左下方有白点 then 白点变黄 :ExitFlag=False
if 左方有白点 then 白点变黄 :ExitFlag=False
if 左上方有白点 then 白点变黄 :ExitFlag=False
if ExitFlag=False then Exit For
end if
next i
Loop until ExitFlag=True
这个方法可以不用到递回 不过相对的 会做很多不必要的处理判断
如果可以的话还是往递回的方面写会比较好....
--
题外话:第一次看到时直觉上就觉得这是拿来写踩地雷用的 Orz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.81.88.26
1F:推 windwofswold:推 踩地雷= = 05/22 09:57
2F:推 fantasywater:的确要做不必要的判断..不是要用在踩地雷..非常感谢! 05/22 21:55