Juego de buscaminas
Dada una matriz de cuadrícula de N × N, cada cuadrícula es '*', que indica que hay una mina en esta ubicación; o '.', Que indica que no hay ninguna mina en esta ubicación:
Ahora Xiao Hi espera que para cada '.', Calcule cuántas minas hay en los 8 cuadrados que lo rodean. Y reemplace el '.' Original con el número calculado de minas:
La
primera fila de Entrada contiene un número entero N, que representa el tamaño de la matriz. (1 ≤ N ≤ 100)
La siguiente es una matriz N × N que consta de los caracteres '.' Y '*'.
Genere
una matriz N × N, que representa la respuesta.
#include <bits/stdc++.h>
using namespace std;
char s[101][101];//存图
int n,i,j,k,l,a[101][101];//存地雷数
int e[8][2]={
{
1,1},{
1,0},{
1,-1},{
0,1},{
0,-1},{
-1,0},{
-1,1},{
-1,-1}},x,y; //八个方向
int main(void)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",s[i]);//二维字符串存图
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(s[i][j]=='.')
{
for(k=0;k<8;k++)//遍历八个方向
{
x=i+e[k][0];y=j+e[k][1];//方向位置
if(x<0||y<0||x>n-1||y>n-1)//判断越界
continue;
if(s[x][y]=='*')
a[i][j]++;
}
}
}
//遍历输出
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(s[i][j]=='*')//输出地雷
printf("%c",s[i][j]);
else//输出周围八个方向的地雷数
printf("%d",a[i][j]);
if(j==n-1)
printf("\n");
}
return 0;
}