#include <bits/stdc++.h> using namespace std; // 使用C++標準名稱空間 const int N = 1e3; // 定義一個常量N,值為1000,用於陣列的大小 char s[N][N]; // 定義一個二維字元陣列,儲存輸入的字元矩陣 bool vis[N][N]; // 定義一個二維布林陣列,標記字元是否需要被替換 int main() { // 主函式入口 int n, m; // 定義n和m,分別表示字元矩陣的行數和列數 cin >> n >> m; // 從標準輸入讀取n和m的值 for (int i = 0; i < n; i++) { // 迴圈讀取字元矩陣的每一行 cin >> s[i]; // 將輸入的每一行儲存在s陣列中 } // 下面的迴圈用於標記水平方向上連續的三個'*'字元,將中間的'*'標記為需要被替換 for (int i = 0; i < n; i++) { for (int j = 1; j < m - 1; j++) { if (s[i][j] == '*' && s[i][j - 1] == '*' && s[i][j + 1] == '*') { vis[i][j - 1] = 1; // 標記左側'*' vis[i][j] = 1; // 標記中間的'*' vis[i][j + 1] = 1; // 標記右側的'*' } } } // 下面的迴圈用於標記垂直方向上連續的三個'*'字元,將中間的'*'標記為需要被替換 for (int i = 0; i < m; i++) { for (int j = 1; j < n - 1; j++) { if (s[j][i] == '*' && s[j - 1][i] == '*' && s[j + 1][i] == '*') { vis[j - 1][i] = 1; // 標記上方的'*' vis[j][i] = 1; // 標記中間的'*' vis[j + 1][i] = 1; // 標記下方的'*' } } } // 輸出處理後的字元矩陣,被標記的'*'字元替換為'.' for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (vis[i][j]) { cout << '.'; // 如果該位置的字元被標記,則輸出'.' } else { cout << s[i][j]; // 否則輸出原字元 } } cout << endl; // 每輸出完一行後換行 } return 0; // 主函式返回0,表示程式正常結束 }