# 題目: UVa 10189 - Minesweeper
# 題目說明
給你n * m的矩形,並告訴你地雷的位置(*),求完成後踩地雷
INPUT:
每筆測資輸入兩個整數n與m,代表範圍
接下來輸入n * m個字元
OUTPUT:
輸出完成後的踩地雷圖
# 解題方法
一個一個字元讀取,當遇到*時,將其位置-10,以他為中心的九宮格全部+1
最後為負數則輸出*,其餘直接輸出
# 參考程式碼
#include <iostream>
#include <memory.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, m, cases = 0;
char ch;
int G[102][102];
while (cin >> n >> m, n && m)
{
memset(G, 0, sizeof(G));
for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j)
{
cin >> ch;
if (ch == '*')
{
G[i][j] -= 10;
for (int x = i - 1; x <= i + 1; ++x) for (int y = j - 1; y <= j + 1; ++y)
{
++G[x][y];
}
}
}
cout << (cases ? "\n" : "") << "Field #" << ++cases << ":\n";
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= m; ++j)
G[i][j] >= 0 ? cout << G[i][j] : cout << "*";
cout << "\n";
}
}
return 0;
}