[水]ZOJ1051

来源:互联网 发布:灵魂相认知乎 编辑:程序博客网 时间:2024/04/30 23:23

题目描述蛋疼死, 看着好费劲

这题的意思就是每次把上下左右和自己都加起来,而后加上一个增量d【sum(上下左右和自己)】,

最后输出。

1A

#include <bits/stdc++.h>using namespace std;const int movx[5]={0,1,0,-1,0};const int movy[5]={0,0,1,0,-1};map<int,char> mp;void Gao(){    int a[25][25]={0};    int d[17];    int days;    cin>>days;    for (int i=0;i<16;i++)        cin>>d[i];    for (int i=1;i<=20;i++)        for (int j=1;j<=20;j++)            scanf("%d",&a[i][j]);    for (int dd=1;dd<=days;dd++)    {        int b[25][25]={0};        for (int i=1;i<=20;i++)            for (int j=1;j<=20;j++)                for (int k=0;k<=4;k++)                    b[i][j]+=a[i+movx[k]][j+movy[k]];        for (int i=1;i<=20;i++)            for (int j=1;j<=20;j++)            {                a[i][j]+=d[b[i][j]];                a[i][j]=min(3,a[i][j]);                a[i][j]=max(0,a[i][j]);            }    }    for (int i=1;i<=20;i++)    {        for(int j=1;j<=20;j++)             cout<<mp[a[i][j]];        cout<<endl;    }}int main(){    int T;    mp[0]='.';    mp[1]='!';    mp[2]='X';    mp[3]='#';   // freopen("a.in","r",stdin);   //freopen("a.out","w",stdout);    bool fst=false;    cin>>T;    while (T--)    {        if (fst)            cout<<endl;        Gao();        fst=true;    }    return 0;}


0 0
原创粉丝点击