457 - Linear Cellular Automata问题求解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了457 - Linear Cellular Automata问题求解相关的知识,希望对你有一定的参考价值。
题目描述:
输入: 第一行为有几个案例、第二行空行、下一行为输入的DNA信息DNA[0-9]、每一行之间都是一个空行。
输出:一共40个培养基CD[0-40],
最开始只有第20个培养基密度为1,其余全部为零,这是初始条件。
第二天,根据CD[i]=CD[i-1]+CD[i]+CD[i+1]。 培养基i位置密度变化为 DNA[ CD[i] ]。
接下来的50行要输出的是接下来的50天每一天的变化。‘ ‘、‘.‘、‘x‘、‘W‘分别代表密度0、1、2、3.
注意输出格式,多个case之间的输出需要有一个空行
代码:
#include <stdio.h> int main(){ int DNA[15]; int cases; int CD[50],CD2[50]; int K; scanf("%d",&cases); for(int i=0;i<cases;i++){ int j=0; while(scanf("%d",&DNA[j])){ j++; if(getchar()==‘\n‘) break; } for(int ini=0;ini<50;ini++){ CD[ini] = 0; CD2[ini] = 0; } CD[20]=1; for(int day=0;day<50;day++){ for(int k=1;k<=40;k++){ if(CD[k]==0) printf(" "); else if(CD[k]==1) printf("."); else if(CD[k]==2) printf("x"); else if(CD[k]==3) printf("W"); K = CD[k-1]+CD[k]+CD[k+1]; CD2[k] = DNA[K]; } for(int k=1;k<=40;k++){ CD[k] = CD2[k]; } printf("\n"); } if(i<cases-1) printf("\n"); } return 0; }
以上是关于457 - Linear Cellular Automata问题求解的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中通过 Cellular 进行跟踪时获取错误坐标
POJ - 3150 :Cellular Automaton(特殊的矩阵,降维优化)