题解 | 扫雷

扫雷

https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd

题干解读;输入一个字符矩阵a[n][m],根据这个字符矩阵的内容输出地雷矩阵.如果矩阵a中的元素为*则b中符号也为*,如果不为*,b中符号是a中对于元素周围8个方向上相邻的*的个数

解题思路:对于输入的矩阵a遍历,找到每一个非*元素相邻的*的个数,然后输出存放到数组b的相应位置,最后输出即可.

#include <iostream>
using namespace std;

int main() {
    int n,m;
    cin>>n>>m;
    char a[n][m];
    char b[n][m];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(a[i][j]=='*'){
                b[i][j] = '*';
            }else{
                int num=0;
                if((i>0 && j>0) && a[i-1][j-1] == '*'){
                    num++;
                }
                if(i>0 &&a[i-1][j] == '*'){
                    num++;
                }
                if((i>0 && j<m-1) &&a[i-1][j+1] == '*'){
                    num++;
                }
                if(j>0 &&a[i][j-1] == '*'){
                    num++;
                }
                if(j<m-1 && a[i][j+1] == '*'){
                    num++;
                }
                if(i<n-1 && j>0 &&a[i+1][j-1] == '*'){
                    num++;
                }
                if(i<n-1 && a[i+1][j] == '*'){
                    num++;
                }
                if(i<n-1 && j<m-1 && a[i+1][j+1] == '*'){
                    num++;
                }
                b[i][j] = '0'+num;
            }
            cout<<b[i][j];
        }
        cout<<endl;
    }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务