全部评论 5

  • 《114》

    2024-04-08 来自 浙江

    2
  • def cnt_mines(fld, r, c, n, m):
    dirs = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]
    count = 0
    for dr, dc in dirs:
    nr, nc = r + dr, c + dc
    if 0 <= nr < n and 0 <= nc < m and fld[nr][nc] == '*':
    count += 1
    return count

    def main():
    n, m = map(int, input().split())
    fld = [input().strip() for _ in range(n)]
    res = [[''] * m for _ in range(n)]

    for i in range(n):  
        for j in range(m):  
            if fld[i][j] == '?':  
                res[i][j] = str(cnt_mines(fld, i, j, n, m))  
            else:  
                res[i][j] = fld[i][j]  
      
    for row in res:  
        print(''.join(row))  
    

    if name == "main":
    main()

    4天前 来自 浙江

    0
  • 你的定义是一维,后面是二维,肯定错啊

    2024-08-09 来自 广东

    0
    • 你也是逆天,去问问老师吧

      2024-08-09 来自 浙江

      0
    • 6
      string它本来就是个数组

      2024-08-11 来自 浙江

      0
    • 而且是WA不是CE

      2024-08-11 来自 浙江

      0
  • 我的代码跟你差不多,可以参考一下

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        int n,m;
        char a[105][105];
        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++){
                int sum=0;
                if(a[i][j]=='?'){
                    if(a[i+1][j]=='*'){
                        sum++;
                    }
                    if(a[i+1][j-1]=='*'){
                        sum++;
                    }
                    if(a[i+1][j+1]=='*'){
                        sum++;
                    }
                    if(a[i-1][j]=='*'){
                        sum++;
                    }
                    if(a[i-1][j+1]=='*'){
                        sum++;
                    }
                    if(a[i-1][j-1]=='*'){
                        sum++;
                    }
                    if(a[i][j+1]=='*'){
                        sum++;
                    }
                    if(a[i][j-1]=='*'){
                        sum++;
                    }
                    cout << sum;
                }else{
                    cout << a[i][j];
                }
            }
            cout << endl;
        }
    	return 0;
    }
    

    2024-08-09 来自 广东

    0
  • 需要处理边界情况,可以在访问某个格子的周围格子时,先判断该格子是否在边界内,然后再进行访问

    2024-04-07 来自 浙江

    0
    • 加了,错了更多了😓

      2024-04-07 来自 浙江

      0
    • 就是边界问题,j-1的时候索引为负数,就会出问题。

      2024-04-07 来自

      0
    • 同时,i-1的时候因为是空字符串,也会索引超出。

      2024-04-07 来自

      0

热门讨论