回 帖 发 新 帖 刷新版面

主题:求教高手一个棘手的问题  __谢谢大家

1.    生命游戏
问题描述:Life游戏只是一个模拟游戏,在Life游戏中没有真正的玩家。Life游戏在一个没有边界的矩形网格中展开,其中的各个元胞(cell)都可以被一个有机体占有或者处于空闲状态。被占用的元胞处于alive(生的)状态,未被占用的元胞处于dead(死的)状态,元胞状态从一代向另一代转换,是否为alive状态主要取决于与其相邻的元胞alive状态的数量,其规则如下:
(1)    与给定元胞相邻的元胞是指与该元胞垂直相连、水平相连,或者是通过对角线相连的元胞。
(2)    如果某元胞状态为alive,但与其相邻的元胞没有一个处于alive状态,或者是与其相邻的元胞仅有一个处在alive状态,那么在下一代中该元胞就因孤立而转变成dead状态。
(3)    如果某元胞状态为alive,并且与其相邻的元胞状态为alive的元胞数量为4个或者更多,那么在下一代中该元胞由于过分拥塞而转变为dead状态。
(4)    如果某个状态为alive的元胞有2个或者3个相邻的状态为alive的元胞,那么在下一代中该元胞状态仍为alive。
(5)    如果某元胞状态为dead,并且与其相邻的元胞状态为alive的元胞数量恰好为3个,那么在下一代中该元胞将转变为alive。其他所有状态为dead的元胞状态保持不变。
(6)    所有的生(状态转变为alive)和死(状态转变为dead)发生在相同的时间。这样一个正在转变为dead状态的元胞将有助于另外一个元胞转变成alive状态,但是通过降低拥塞并不能阻止其他元胞转变为dead状态。同时,正在转变为alive状态的元胞不会保持或取消上一代中状态为alive的元胞。
编写程序演示初始元胞群体是如何一代一代变化下去的。
算法的输入:矩形数组map,其中包含alive元胞的初始布局。
算法的输出:矩形数组map中的内容。 
算法要点:对矩形数组map中的每个元胞执行下面的步骤:
(1)    统计与元胞相邻的状态为alive的元胞的数目。
(2)    如果统计结果为0、1、4、5、6、7或8,则设置另一个矩形数组newmap中对应的元胞的状态设置为dead;如果统计结果为3,则将对应的元胞的状态设置为alive;如果统计结果为2,则将对应的元胞的状态设置为map数组中相应的元胞状态(因为状态为alive的相邻元胞的数目为2的元胞状态不改变)。
(3)    将newmap矩形数组中的内容复制到map矩形数组。
(4)    输出map矩形数组中的内容。



回复列表 (共2个回复)

沙发

不会啊   怎么没有人会吗?
有看的没有回复的!

板凳

这个应该是个递归程序,只要把递归掌握的到手了,应该没有什么问题!

我来回复

您尚未登录,请登录后再回复。点此登录或注册