# 法1: # n,m=list(map(int,input().split())) # mine=[] # #创建一个(n+2)行(m+2)列的扫雷矩阵,所有值初始化为. # for i in range(n+2): # row=['.']*(m+2) # mine.append(row) # # 为矩阵的n行m列赋值(键盘输入) # for i in range(1,n+1): # row=str(input().strip()) # for j in range(1,m+1): # mine[i][j]=row[j-1] # # 遍历矩阵的矩阵的n行m列 # for i in range(1,n+1): # for j in range(1,m+1): # counts=0 # if mine[i][j]=="*": # continue # # 计算八个方向雷的个数 # else: # if mine[i][j-1]=="*": # counts+=1 # if mine[i][j+1]=="*": # counts+=1 # if mine[i-1][j]=="*": # counts+=1 # if mine[i+1][j]=="*": # counts+=1 # if mine[i-1][j-1]=="*": # counts+=1 # if mine[i-1][j+1]=="*": # counts+=1 # if mine[i+1][j-1]=="*": # counts+=1 # if mine[i+1][j+1]=="*": # counts+=1 # mine[i][j]=str(counts) # # 输出矩阵 # for i in range(1,n+1): # for j in range(1,m+1): # print(mine[i][j],end='') # print() # 法2: # 读取输入 n, m = map(int, input().split()) grid = [input().strip() for _ in range(n)] # 初始化计数矩阵(记录每个位置周围的雷数) count = [[0] * m for _ in range(n)] # 定义八个方向:上、下、左、右、左上、右上、左下、右下 directions = [ (-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1) ] # 第一遍遍历:统计雷的影响 for i in range(n): for j in range(m): if grid[i][j] == '*': # 发现雷 for dx, dy in directions: ni, nj = i + dx, j + dy # 计算邻格坐标 # 检查是否在矩阵范围内 if 0 <= ni < n and 0 <= nj < m: count[ni][nj] += 1 # 该位置雷计数+1 # 第二遍遍历:构建结果矩阵 result = [] for i in range(n): line = '' for j in range(m): if grid[i][j] == '*': line += '*' # 雷位置保持不变 else: line += str(count[i][j]) # 非雷位置输出雷计数 result.append(line) # 输出结果 for line in result: print(line)