几乎就是UVA上的原题,说实话有点冷……看来有必要针对UVA的题多留意一点
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
// ifstream cin ("mine.in");
// ofstream cout ("estdout.pc2");
vector<string>mine;
int i,j,k,m,n,num=0;
int d[]={1,0,1,1,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1};
string t;
while(cin >> m >> n)
{
if(!m && !n) break;
mine.clear();
for(i=0; i<m; i++)
{
cin >> t;
mine.push_back(t);
}
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
if(mine[i][j]=='*') continue;
int s=0;
for(k=0; k<16; k+=2)
{
if(i+d[k]>=0 && i+d[k]<m && j+d[k+1]>=0 && j+d[k+1]<n && mine[i+d[k]][j+d[k+1]]=='*')
s++;
}
mine[i][j]=(char)('0'+s);
}
if(num++>0) cout << endl;
cout << "Field #" << num << ":" << endl;
for(i=0; i<m; i++)
cout << mine[i] << endl;
}
return 0;
}