#include <iostream>
using namespace std;
void display(char a[][1000],int m,int n)
{
for(int i=0;i<m;i++) //输出结果矩阵
{ for(int j=0;j<n;j++)
{ if(a[i][j]=='*')cout<<'*';
else
{
int num=0; // 用于统计当前点周围的地雷数
if(j-1>=0&&a[i][j-1]=='*')num++;
if(j+1<n&&a[i][j+1]=='*') num++;
if (i+1<m&&j-1>=0&&a[i+1][j-1]=='*')num++;
if(i+1<m&&a[i+1][j]=='*') num++;
if (i+1<m&&j+1<n&&a[i+1][j+1]=='*')num++;
if (i-1>=0&&j-1>=0&&a[i-1][j-1]=='*')num++;
if(i-1>=0&&a[i-1][j]=='*') num++;
if (i-1>=0&&j+1<n&&a[i-1][j+1]=='*')num++;
cout<<num;
}
}
cout<<endl;
}
}
int main()
{
int m,n;
const int row=1000; //开辟行空间
const int colom=1000; //开辟列空间
char getin[row][colom];
int Field=0;
while(cin>>m>>n)
{
if (m==0&&n==0) break;
int i,j;
for(i=0;i<m;i++) //创建输入矩阵
for(j=0;j<n;j++)
cin>>getin[i][j];
Field++;
if(Field>1) cout<<endl; //如果是第一次输入的话输出结果不输出换行符
cout<<"Field #"<<Field<<':'<<endl;
display(getin,m,n);
}
return 0;
}
第一章:扫雷题解
最新推荐文章于 2022-03-22 20:10:56 发布