扫雷游戏
/*
http://acm.fzu.edu.cn/problem.php?pid=1056
你的任务是在已知地雷出现位置的情况下,得到各个方块中的数据。
经过处理应得到
Input
Output
*/
#include<iostream>
using namespace std;
int main()
{
char a[100][100];
int tag[100][100];
int i,j,n,m,num;
while(true)
{
cin>>n>>m;
if(m==0&&n==0)
break;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
cin>>a[i][j];
if(a[i][j]=='*')
tag[i][j]=1;
else
tag[i][j]=0;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
num=0;
if(i-1>=0&&j>=0&&tag[i-1][j]==1)
num++;
if(i-1>=0&&j+1<m&&tag[i-1][j+1]==1)
num++;
if(i-1>=0&&j-1>=0&&tag[i-1][j-1]==1)
num++;
if(i>=0&&j+1<m&&tag[i][j+1]==1)
num++;
if(i>=0&&j-1>=0&&tag[i][j-1]==1)
num++;
if(i+1<n&&j+1<m&&tag[i+1][j+1]==1)
num++;
if(i+1<n&&j>=0&&tag[i+1][j]==1)
num++;
if(i+1<n&&j-1>=0&&tag[i+1][j-1]==1)
num++;
if(tag[i][j]==1)
num++;
if(a[i][j]!='*')
cout<<num;
else
cout<<'*';
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
/*
2 3
***
...
4 4
*...
....
.*..
....
0 0
*/