#include<stdio.h>
int main()
{int n,m;
int i,j,sum;
scanf("%d%d",&n,&m);
char str[n][m];
getchar();
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{scanf("%c",&str[i][j]);}
getchar();}
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{if(str[i][j]=='?') //如果当前元素为非雷区,遍历四周元素并对 “雷区” 个数计数;
{sum=0; //每轮循环刷新一次的雷区计数器;
if(i-1>=0&&j-1>=0&&str[i-1][j-1]=='*') //以下顺时针遍历,注意防止数组下标越界
int main()
{int n,m;
int i,j,sum;
scanf("%d%d",&n,&m);
char str[n][m];
getchar();
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{scanf("%c",&str[i][j]);}
getchar();}
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{if(str[i][j]=='?') //如果当前元素为非雷区,遍历四周元素并对 “雷区” 个数计数;
{sum=0; //每轮循环刷新一次的雷区计数器;
if(i-1>=0&&j-1>=0&&str[i-1][j-1]=='*') //以下顺时针遍历,注意防止数组下标越界
{sum++;}
if(i-1>=0&&str[i-1][j]=='*')
{sum++;}
if(i-1>=0&&j+1<m&&str[i-1][j+1]=='*')
{sum++;}
if(j+1<m&&str[i][j+1]=='*')
{sum++;}
if(i+1<n&&j+1<m&&str[i+1][j+1]=='*')
{sum++;}
if(i+1<n&&str[i+1][j]=='*')
{sum++;}
if(i+1<n&&j-1>=0&&str[i+1][j-1]=='*')
{sum++;}
if(j-1>=0&&str[i][j-1]=='*')
{sum++;}
str[i][j]='0'+sum; //将当前元素四周的雷区计数个数以char类型赋值给当前元素
}}}
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{printf("%c",str[i][j]);}
printf("\n");}
}
if(i-1>=0&&str[i-1][j]=='*')
{sum++;}
if(i-1>=0&&j+1<m&&str[i-1][j+1]=='*')
{sum++;}
if(j+1<m&&str[i][j+1]=='*')
{sum++;}
if(i+1<n&&j+1<m&&str[i+1][j+1]=='*')
{sum++;}
if(i+1<n&&str[i+1][j]=='*')
{sum++;}
if(i+1<n&&j-1>=0&&str[i+1][j-1]=='*')
{sum++;}
if(j-1>=0&&str[i][j-1]=='*')
{sum++;}
str[i][j]='0'+sum; //将当前元素四周的雷区计数个数以char类型赋值给当前元素
}}}
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
{printf("%c",str[i][j]);}
printf("\n");}
}
全部评论
(0) 回帖