Advertisement

上海市计算机学会竞赛平台2020年5月月赛丙组扫雷

阅读量:
题目描述

小爱正在编写一个扫雷游戏的出题模块。这个模块的输入是一张地图,标记了每个地雷的位置,地雷以 * 表示,空地以 . 表示。这个模块的输出是一个表格,统计了每个空地周围八个方格内的地雷数量。

例如,给定一个初始地图:

复制代码
 *.*

    
 ...
    
 *..
    
    
    
    

则应输出:

复制代码
 *2*

    
 231
    
 *10
    
    
    
    

请你帮助小爱来完成这个程序。

输入格式

第一行:两个整数n 和m;
接下来有n×m 个字符,表示每个方格是否存在地雷。

输出格式

共计n×m 个字符,表示每个方格周围地雷统计信息,若原本这个位置就有地雷,输出 *

数据范围

1≤1001≤n,m≤100

样例数据

输入:

3 4
..
.**.
..

输出:

33
3**3
24

详见代码:

复制代码
 #include <cstdio>

    
 #include <iostream>
    
 using namespace std;
    
  
    
 int n, m;
    
 char a[105][105];
    
  
    
 int f(int x, int y) {
    
 	int ans = 0;
    
 	
    
 	for (int i = x - 1; i <= x + 1; i ++ ) {
    
 		for (int j = y - 1 ; j <= y + 1; j ++ ) {
    
 			if (a[i][j] == '*') ans ++ ;
    
 		}
    
 	}
    
 	return ans;
    
 }
    
  
    
 int main() {
    
 	cin >> n >> m;
    
 	
    
 	for (int i = 1; i <= n; i ++ ) {
    
 		for (int j = 1; j <= m; j ++ ) {
    
 			cin >> a[i][j];
    
 		}
    
 	}
    
  
    
 	for (int i = 1; i <= n; i ++ ) {
    
 		for (int j = 1; j <= m; j ++ ) {
    
 			if (a[i][j] == '*') cout << '*';
    
 			else cout << f(i,j);
    
 		}
    
 		cout << endl;
    
 	}
    
  
    
 	return 0;
    
 }
    
    
    
    

全部评论 (0)

还没有任何评论哟~