ZOJ1051 A New Growth Industry

简介:
这道题就是读懂题目太费劲了,非要扯到什么DNA上去,其实就是简单的数组处理,和上下左右的加加,然后查表把所得值加到当前项上来,若越界则处理下。

复制代码
#include <iostream>
using namespace std;

const int  MAXNUM = 20;//培养皿是*20的大小
char SignTable[]=".!X#";//符号表  
int dish[MAXNUM][MAXNUM],res[MAXNUM][MAXNUM];   
int day,d[16];   

int main()   
{    
    int cases;//测试样例数  
    int i,j,k;  
    while (cin>>cases)
    {
        while (cases--)
        {   
            cin>>day; //培养天数
            //输入DNA序列信息
            for (k=0; k<16; ++k)
                cin>>d[k];
            //输入培养皿数据
            for (i=0; i<MAXNUM; ++i)   
                for (j=0; j<MAXNUM; ++j)   
                    cin>>dish[i][j];   
            while (day--)
            {   
                for (i=0; i<MAXNUM; ++i)   
                    for (j=0; j<MAXNUM; ++j)
                    {   
                        k = dish[i][j];  
                        //和上下左右的结合起来
                        if (i-1>=0) 
                            k += dish[i-1][j];   
                        if (i+1<MAXNUM) 
                            k += dish[i+1][j];   
                        if (j-1>=0)
                            k += dish[i][j-1];   
                        if (j+1<MAXNUM) 
                            k += dish[i][j+1];   
                        res[i][j] = dish[i][j]+d[k];   
                        //不能超过0~3的范围
                        if (res[i][j]>3)
                            res[i][j] = 3;   
                        if (res[i][j]<0)
                            res[i][j] = 0;   
                    }   
                memcpy (dish,res,sizeof(dish));   
            }   
            for (i=0; i<MAXNUM; ++i)
            {   
                for (j=0; j<MAXNUM; ++j)   
                    cout<<SignTable[dish[i][j]];   
                cout<<endl;   
            }   
            //样例之间有一个空行
            if (cases!=0) 
                cout<<endl;   
        } 
    }
    return 0;   
}
复制代码



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/10/23/1318209.html,如需转载请自行联系原作者
目录
相关文章
Leetcode 365. Water and Jug Problem
一句话理解题意:有容积为x和y升的俩水壶,能不能量出z升的水。 我刚开始看到这题,立马就想了下暴力搜索的可能性,但考虑了下数据大小,立马放弃这个暴力的想法,于是意识到肯定有比较简单的数学方法,其实我自己没想到,后来看还是看了别人的代码,很多博客都直接给出了解法, 但没介绍为什么能这么解。所以我决定解释下我自己的思路。
48 0
UVa11565 - Simple Equations
UVa11565 - Simple Equations
52 0
The Preliminary Contest for ICPC China Nanchang National Invitational A题 PERFECT NUMBER PROBLEM
The Preliminary Contest for ICPC China Nanchang National Invitational A题 PERFECT NUMBER PROBLEM
70 0
|
机器学习/深度学习
The Preliminary Contest for ICPC China Nanchang National Invitational J题 Distance on the tree
The Preliminary Contest for ICPC China Nanchang National Invitational J题 Distance on the tree
93 0
|
机器学习/深度学习 人工智能
The Preliminary Contest for ICPC China Nanchang National Invitational I题 Max answer
The Preliminary Contest for ICPC China Nanchang National Invitational I题 Max answer
94 0
LeetCode 365. Water and Jug Problem
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?
82 0
LeetCode 365. Water and Jug Problem
HDU-1057,A New Growth Industry(理解题意)
HDU-1057,A New Growth Industry(理解题意)
|
Windows
Prediction and Restriction——UPC
题目描述 At an arcade, Takahashi is playing a game called RPS Battle, which is played as follows: ·The player plays N rounds of Rock Paper Scissors against the machine. (See Notes for the description of Rock Paper Scissors. A draw also counts as a round.)
125 0
PAT (Advanced Level) Practice - 1087 All Roads Lead to Rome(30 分)
PAT (Advanced Level) Practice - 1087 All Roads Lead to Rome(30 分)
101 0
ZOJ - Summer 2018 - Contest 1 by SBconscious - Problems - 1001: Saber
ZOJ - Summer 2018 - Contest 1 by SBconscious - Problems - 1001: Saber
94 0