算法设计与编程 扫雷游戏 题型:搜索

74 阅读1分钟

赛氪OJ-专注于算法竞赛的在线评测系统 (saikr.com)

#include<bits/stdc++.h>
using namespace std;
char g[110][110];
int n,m,ans;
int dx[]={0,1,1,1,0,-1,-1,-1};
int dy[]={1,1,0,-1,-1,-1,0,1};



void dfs(int x,int y)    
{
    int z=0;
//    for (int i=-1; i<2; i++)
        for (int i=0; i<8; i++)
        {
            int tx = x+dx[i];
            int ty = y+dy[i];
            if(tx<0&&tx>=n-1&&ty<0&&ty>=m-1)continue;
            
                if(g[tx][ty]=='*')    z++;
        } cout<<z;
}


int main()  
{
    cin>>n>>m;
    getchar();
    for(int i=0; i<n; i++)   {
        for(int j=0; j<m; j++)  cin>>g[i][j];
         getchar();
    }
    
    
    for(int i=0; i<n; i++)   {
        for(int j=0; j<m; j++)   {
            if(g[i][j]=='*') 
				cout<<"*";
            else 
				dfs(i,j);
            if(j+1==m) 
				cout<<endl;
        }
    }
    return 0;
}

image.png