Run ID:141299

提交时间:2025-12-22 09:24:51

#include <iostream> //designed by hu 2025-10 using namespace std; char a[101][101]={}; char b[101][101]={}; int main(){ int row,col; cin>>row>>col; //输入数据 for(int i=1;i<=row;i++) for(int j=1;j<=col;j++) cin>>a[i][j]; //遍历 for(int i=1;i<=row;i++) for(int j=1;j<=col;j++) { if(a[i][j]=='?') { int t = 0; // 地雷计数器 int x, y; // 临时坐标变量 // 1. 左上 (i-1, j-1) x = i-1; y = j-1; if(x >= 1 && y >= 1 && a[x][y] == '*') t++; // 2. 上 (i-1, j) x = i-1; y = j; if(x >= 1 && a[x][y] == '*') t++; // 3. 右上 (i-1, j+1) x = i-1; y = j+1; if(x >= 1 && y <= col && a[x][y] == '*') t++; // 4. 左 (i, j-1) x = i; y = j-1; if(y >= 1 && a[x][y] == '*') t++; // 5. 右 (i, j+1) x = i; y = j+1; if(y <= col && a[x][y] == '*') t++; // 6. 左下 (i+1, j-1) x = i+1; y = j-1; if(x <= row && y >= 1 && a[x][y] == '*') t++; // 7. 下 (i+1, j) x = i+1; y = j; if(x <= row && a[x][y] == '*') t++; // 8. 右下 (i+1, j+1) x = i+1; y = j+1; if(x <= row && y <= col && a[x][y] == '*') t++; // 将计数转换为字符 b[i][j] = '0' + t; } else { b[i][j]='*'; } } //标准测试输出 for(int i=1;i<=row;i++) { for(int j=1;j<=col;j++) { cout<<b[i][j]; } cout<<"\n"; } return 0; } /* 3 3 *?? ??? ?*? *10 221 1*1 */