Solución al problema número 315 de AceptaelReto - 315.

Cualquier duda no dudes en contactar.

#include <bits/stdc++.h>
using namespace std;

int sx[]={1,-1,0,0,1,-1,-1,1}; //8 directions
int sy[]={0,0,1,-1,1,-1,1,-1};
char arr[55][55];
bool arra[55][55];
int arrsol[55][55];
int r,c,num;
void solve(int a, int b){
        for(int i=0;i<8;i++)
        {
            int I=a+sx[i];
            int J=b+sy[i];
            if(I>=0 && I<r && J>=0 && J<c){
                if(arr[I][J]!='*')
                    arrsol[I][J]++;
            }
        }
}
void bfs(int a,int b)
{
    queue<pair<int,int>> Q;
    Q.push(make_pair(a,b));
    while(!Q.empty())
     {
        pair<int,int> aux = Q.front(); Q.pop();
        a=aux.first; b=aux.second;
        arra[a][b]=true;
        if(arrsol[a][b]==0)
        {
            for(int i=0;i<8;i++)
            {
                int I=a+sx[i];
                int J=b+sy[i];
                if(I>=0 && I<r && J>=0 && J<c &&!arra[I][J]){
                    arra[I][J]=true;
                    if(arrsol[I][J]==0 && arr[I][J]!='*') Q.push(make_pair(I,J));
                }
            }
        }
    }
}
int main(){
    while(scanf("%d%d",&r,&c)==2)
    {
    memset(arrsol,0,sizeof(arrsol));
    memset(arra,false,sizeof(arra));
    for(int i=0; i<r;i++)
        for(int j=0; j<c;j++) cin>>arr[i][j];
    int k; cin>>k;
    int c1,r1;
    for(int i=0; i<r;i++)
        for(int j=0; j<c;j++) if(arr[i][j]=='*') solve(i,j);
    bool print=true;
    for(int i=0; i<k;i++)
    {
        cin>>c1>>r1;
        c1--; r1--;
        if(arr[c1][r1]=='*') print=false;
        if(print) bfs(c1,r1);
    }
    if(print)
    {
        for(int i=0; i<r;i++)
        {
            for(int j=0; j<c;j++)
            {
                if(arra[i][j] && arrsol[i][j]!=0) cout<<arrsol[i][j];
                else if(arra[i][j] && arrsol[i][j]==0) cout<<"-";
                else cout<<"X";
            }
            cout<<endl;
        }
    }
    else cout<<"GAME OVER\n";
    }
return 0;
}

No te pierdas nada.

Sigue en contacto con Isaac Lozano Osorio!