您的位置:首页 > 其它

[水]ZOJ1051

2014-08-03 14:51 218 查看
题目描述蛋疼死, 看着好费劲

这题的意思就是每次把上下左右和自己都加起来,而后加上一个增量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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zoj