UVA 457Linear Cellular Automata

题目:慢慢读题。

1.初始时,40个培养皿每一个浓度为 0000000000000000000.00000000000000000000
(字符与整型对应关系:b-0 .-1 x-2 W-3)
输出时,转化为 bbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbb (b代表空格)
2.每一个培养皿的下一次浓度(density)= DNA[K],其中K=这一次 这个培养皿的左边那个培养皿 + 这个培养皿本身浓度+这个培养皿右边的培养皿浓度(第一个培养皿左边的培养皿浓度视为0,最后一个培养皿右边的培养皿浓度视为0)
简化理解:k=左+中+右
3.输出50行
4.输入时,第一行指你要输入DNA数组的个数。第二行指DNA数组值。  


分析:读懂题后,此题和 杨辉三角 输入输出就很像了。


注意: 题目 看仔细注意力集中 我犯得错误:1.DNA[左中右的和为k] == 下一次浓度 2.初始化 m(循环49次,第一次独立输出) dish[]每轮(n)都要初始化 3.最后一个输出没有换行。

#include <iostream>
#include "cstring"
#include <string>
#include <stdlib.h>
#include <sstream>
#include"cstdio"

using namespace std;
int main()
{
    int n, m;
    scanf("%d",&n);
    int dish[45];

    int DNA[10];
    while(n--)
    {
        m=49;
        memset(dish,0,sizeof(dish));
        dish[19]=1;
        for(int i=0; i<10; i++)
            cin>>DNA[i];
          for(int i=0; i<40; i++)
            {
                switch(dish[i])
                {
                    case 0:cout<<' ';break;
                    case 1:cout<<'.';break;
                    case 2:cout<<'x';break;
                    case 3:cout<<'W';break;
                }
            }
            cout<<endl;
        while(m--)
        {

            int L=0,P=0;
            for(int i=0; i<40; i++)
            {
                P=dish[i];
                if(i==39)
                    dish[i]= DNA[L+0+dish[i]];
                else dish[i]=DNA[dish[i+1]+L+dish[i]];
                L=P;
            }

            for(int i=0; i<40; i++)
            {
                switch(dish[i])
                {
                    case 0:cout<<' ';break;
                    case 1:cout<<'.';break;
                    case 2:cout<<'x';break;
                    case 3:cout<<'W';break;
                }
            }
            cout<<endl;
        }
        if(n) cout<<endl;
    }
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>