蒟蒻,20分RE求调

P2670 [NOIP2015 普及组] 扫雷游戏

你输出 `dx[8]` 试试,你会发现是一堆乱码 枚举 $k$ 时从 $0 \sim 7$ 应该就没问题了
by liuruiqing @ 2024-04-17 19:27:35


@[unnamed_213](/user/992285)
by liuruiqing @ 2024-04-17 19:27:50


### 问题有如下两点: #### 1. 偏移量错误,dx数组的倒数第二个少了个负号 ------------ #### 2. 数组越界的问题出现在偏移量数组的枚举,代码中定义偏移量数组的格式下标是从0开始的,遍历却是从1开始的 ------------ ### AC代码如下: ```cpp #include <iostream> #define endl "\n" using namespace std; int main() { ios::sync_with_stdio(false); int dx[]={1, 1, 1, 0, -1, -1, -1, 0}; int dy[]={1, 0, -1, -1, -1, 0, 1, 1}; int n, m; cin >> n >> m; char ch[n+2][m+2]; for (int i=1; i<=n; i++) for (int j=1; j<=m; j++) cin >> ch[i][j]; for (int i=0; i<=n+1; i++) ch[i][0]=ch[i][m+1]='?'; for (int i=0; i<=m+1; i++) ch[0][i]=ch[n+1][0]='?'; for (int i=1; i<=n; i++) { for (int j=1; j<=m; j++) { if (ch[i][j]=='*') { cout << '*'; continue; } int cnt=0; for (int k=0; k<8; k++) if (ch[i+dx[k]][j+dy[k]]=='*') cnt++; cout << cnt; } cout << endl; } return 0; } ```
by bulopi @ 2024-04-17 19:47:51


@[unnamed_213](/user/992285) (可以球个关吗?OvO)
by bulopi @ 2024-04-17 19:48:54


@[liuruiqing](/user/1118614) @[bulopi](/user/948361) AC了 感谢大佬
by unnamed_213 @ 2024-04-17 20:30:23


|