梦回以前写元胞自动机的时候了,你这个题目很像以前做过的一个元胞自动机。看了一下你的代码,大概就是你刷新有问题。按我的理解,这个题目刷新应该是以天为单位,每个cell的当前状态只取决于上一个时刻它冯诺依曼邻居的状态。
你这里变成你边刷新边判断可能会导致某些不会感染的cell变成了感染。你应该判断好下个周期有哪些cell会被感染,然后在判断结束之后统一将这些cell变成感染者,开始下个周期。类似时序逻辑电路的时钟周期那样子。
我自己的做法一般是搞成二维数组,把将会感染的cell标记出来,然后在判断结束之后转化。用matlab的话我倾向于再搞一个矩阵出来,作为寄存器来用,让这个矩阵等于每个周期开始时的原始矩阵,然后判断哪些cell会转变之后对这个新矩阵操作。
总之就是要把判断和转化隔离开来。