题目链接:http://uva.onlinejudge.org/external/4/457.html
题目分析
题目的背景是细胞增殖,这种增殖受到 DNA 的控制。题目给出了 dish 中的细胞的增殖规则,要求程序读入 DNA,输出第 1 - 50 天中每个 dish 的细胞数。
关键的地方在于:某 dish 该天的细胞数 = DNA[K],K = 该 dish 昨天的细胞数 + 左右 dish 昨天的细胞数
还要处理两处特殊情况:最左(右) dish 的左(右)侧没有 dish
这道题可以通过一天天地计算出每个 dish 中的细胞数来求解。要注意的是,某 dish 该天的细胞数是参考昨天的情况计算出来的。由于程序是逐个 dish 计算,因此要先拷贝昨天的情况,否则如果仅使用一个数组来记录并直接更改,那么同一天中后更新的 dish 会受到已更新的 dish 的影响。
为了方便,我在设计 dish 的时候,在左右两侧增加了两个 dish,分别是 dish[0] 和 dish[41],令它们的细胞数一直为 0(在每天更新细胞数时不更新它们),这样就不必显示地对最左(右)的 dish 进行特殊处理了。
解答
1 |
|