Juego buscaminas (búsqueda)

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:

Inserte la descripción de la imagen aquí

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:

Inserte la descripción de la imagen aquí

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.

Inserte la descripción de la imagen aquí

#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;
}

Supongo que te gusta

Origin blog.csdn.net/m0_46381590/article/details/112095114
Recomendado
Clasificación