题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1120
这道题太郁闷了,照理说从文件读入时,用while和不用while没什么区别吧,为什么错了呢?
#include <iostream>
using namespace std;
int main()
{
freopen("in.txt","r",stdin);
int i,j,k,m,n,t,days,D[16],Num[22][22],Tmp[22][22];
int offset[4][2] = {{0,-1},{0,1},{-1,0},{1,0}};
for(i = 0;i < 22;++i)
Num[0][i] = Num[21][i] = Num[i][0] = Num[i][21] = 0;
/*while*/(cin >> days);//将while去掉再加上;就对了,要不一直WA,不知为什么?
{
for(i = 0;i < 16;++i)
cin >> D[i];
for(i = 1;i <= 20;++i)
{
for(j = 1;j <= 20;++j)
cin >> Num[i][j];
}
while(days-- > 0)
{
for(i = 1;i <= 20;++i)
{
for(j = 1;j <= 20;++j)
{
t = Num[i][j];
for(k = 0;k < 4;++k)
{
m = i,n = j;
m += offset[k][0];
n += offset[k][1];
t += Num[m][n];
}
Tmp[i][j] = D[t];
}
}
for(i = 1;i <= 20;++i)
{
for(j = 1;j <= 20;++j)
{
Num[i][j] += Tmp[i][j];
if(Num[i][j] < 0)
Num[i][j] = 0;
if(Num[i][j] > 3)
Num[i][j] = 3;
}
}
}
for(i = 1;i <= 20;++i)
{
for(j = 1;j <= 20;++j)
{
if(Num[i][j] == 0)
cout << '.';
else if(Num[i][j] == 1)
cout << '!';
else if(Num[i][j] == 2)
cout << 'X';
else
cout << '#';
}
cout << endl;
}
cout << endl;
}
return 0;
}