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问题求解的主要内容,如果未能解决你的问题,请参考以下文章

poj 3150Cellular Automaton 矩阵

在 iOS 中通过 Cellular 进行跟踪时获取错误坐标

POJ - 3150 :Cellular Automaton(特殊的矩阵,降维优化)

UVA 1386 Cellular Automaton

POJ3150—Cellular Automaton(循环矩阵)

UVa 620 Cellular Structure(DP)