码迷,mamicode.com
首页 > 其他好文 > 详细

457 - Linear Cellular Automata问题求解

时间:2016-09-02 11:32:55      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

输入: 第一行为有几个案例、第二行空行、下一行为输入的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问题求解

标签:

原文地址:http://www.cnblogs.com/lzq031/p/5832552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!